This is probably just me, but I found INSTALL.md to be a bit confusing.
So, for a fresh install of Ubuntu in a Windows Hyper-V VM, this is the list of steps I took to get something that at least looks like it might be the right thing:
remove unattended-upgrades, and clean up after OS install
sudo systemctl stop unattended-upgrades
sudo apt-get purge unattended-upgrades
sudo apt autoremove
install postgresql 16
sudo apt install ca-certificates pkg-config
wget --quiet -O - [https://www.postgresql.org/media/keys/ACCC4CF8.asc](https://www.postgresql.org/media/keys/ACCC4CF8.asc) | sudo apt-key add -
sudo sh -c 'echo "deb [http://apt.postgresql.org/pub/repos/apt/](http://apt.postgresql.org/pub/repos/apt/) $(lsb_release -cs)-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
sudo apt update
sudo apt install libpq-dev postgresql
install python libs
sudo apt install python3-pip python3-venv python3-dev python3-psycopg2
install redis server
sudo apt install redis-server
install git
sudo apt install git
set up database
sudo -iu postgres psql -c "CREATE USER pyfedi WITH PASSWORD 'pyfedi';"
sudo -iu postgres psql -c "CREATE DATABASE pyfedi WITH OWNER pyfedi;"
clone PieFed
git clone [https://codeberg.org/rimu/pyfedi.git](https://codeberg.org/rimu/pyfedi.git)
cd into pyfedi, set up and enter virtual environment
cd pyfedi
python3 -m venv ./venv
source venv/bin/activate
use pip to install requirements
pip install wheel
pip install -r requirements.txt
edit .env file
cp env.sample .env
nano .env
(change SECRET_KEY to some random sequence of numbers and letters)
initialise database, and set up admin account
flask init-db
run the app
flask run
(open web browser at http://127.0.0.1:5000))
(log in with username and password from admin account)
Maybe this will help someone else (or maybe someone has spotted something that I missed - like I say: it looks right when loaded in a browser, but I’m not 100% sure)