+sudo dnf install -y nginx postgresql postgresql-server postgresql-contrib openssl gcc-c++ make wget redis git python3
+sudo ln -s /usr/bin/python3 /usr/bin/python
+sudo PGSETUP_INITDB_OPTIONS='--auth-host=md5' postgresql-setup --initdb --unit postgresql
+sudo systemctl enable --now redis
+sudo systemctl enable --now postgresql
+```
+
+6. Configure the peertube user:
+```
+sudo useradd -m -d /var/www/peertube -s /bin/bash -p peertube peertube
+```
+
+7. Unknown missing steps:
+- Steps missing here... these were adapted from the CentOS 8 steps which abruptly ended.
+- /var/www/peertube does not exist yet (expected? done in future steps? documentation?).
+- Nothing about Certbot, NGINX, Firewall settings, and etc.
+- Hopefully someone can suggest what is missing here with some hints so I can add it?
+
+## Fedora
+
+1. Upgrade your packages:
+
+```
+dnf upgrade
+```
+
+2. Add a user with sudoers group access:
+
+```
+useradd my-peertube-user
+passwd my-peertube-user
+usermod my-peertube-user -a -G wheel # Add my-peertube-user to sudoers
+su my-peertube-user
+```
+
+3. (Optional) Install certbot (choose instructions for your distribution):
+[https://certbot.eff.org/all-instructions](https://certbot.eff.org/all-instructions)
+
+4. Install NodeJS 16.x:
+[https://nodejs.org/en/download/package-manager/#enterprise-linux-and-fedora](https://nodejs.org/en/download/package-manager/#enterprise-linux-and-fedora)
+
+5. Install yarn:
+[https://yarnpkg.com/en/docs/install](https://yarnpkg.com/en/docs/install)
+
+6. Enable [RPM Fusion](https://rpmfusion.org) for Fedora (available for x86, x86_64, armhfp)
+
+```
+sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
+```
+This is necessary because `ffmpeg` is not in the Fedora repos.
+
+7. Run:
+
+```
+sudo dnf install nginx ffmpeg postgresql-server postgresql-contrib openssl gcc-c++ make redis git vim
+ffmpeg -version # Should be >= 4.1
+g++ -v # Should be >= 5.x
+redis-server --version # Should be >= 5.x
+```
+
+8. Configure nginx
+
+```
+sudo mkdir /etc/nginx/sites-available
+sudo mkdir /etc/nginx/sites-enabled
+sudo ln -s /etc/nginx/sites-enabled/peertube /etc/nginx/conf.d/peertube.conf
+```
+
+9. Post-installation
+
+_from [PostgreSQL documentation](https://www.postgresql.org/download/linux/redhat/):_
+> Due to policies for Red Hat family distributions, the PostgreSQL installation will not be enabled for automatic start or have the database initialized automatically.
+
+```
+# PostgreSQL
+sudo PGSETUP_INITDB_OPTIONS='--auth-host=md5' postgresql-setup --initdb --unit postgresql
+sudo systemctl enable postgresql.service
+sudo systemctl start postgresql.service
+# Nginx
+sudo systemctl enable nginx.service
+sudo systemctl start nginx.service
+# Redis
+sudo systemctl enable redis.service
+sudo systemctl start redis.service
+```
+
+10. Firewall
+
+By default, you cannot access your server via public IP. To do so, you must configure firewall:
+
+- Ports used by peertube dev setup:
+```
+sudo firewall-cmd --permanent --zone=public --add-port=3000/tcp
+sudo firewall-cmd --permanent --zone=public --add-port=9000/tcp
+```
+- Optional
+
+```
+sudo firewall-cmd --permanent --zone=public --add-service=http
+sudo firewall-cmd --permanent --zone=public --add-service=https
+```
+
+- Reload firewall
+
+```
+sudo firewall-cmd --reload
+```
+
+11. Configure max ports
+
+This is necessary if you are running dev setup, otherwise you will have errors with `nodemon`