|
||
---|---|---|
bensuperpc_website@859f5d3874 | ||
env | ||
nginx-conf | ||
nginx-conf-cert | ||
.gitignore | ||
.gitmodules | ||
docker-compose.yml | ||
LICENSE | ||
Makefile | ||
README.md |
Infrastructure
My infrastructure
About
This is my infrastructure. It's a collection of scripts and configuration files that I use to manage my servers. It uses Nginx and docker-compose to run my services (And many other things). It's a work in progress, and I'm still learning a lot about it.
Features
- Nginx
- Docker / docker-compose
- Letsencrypt / Certbot
- Flask (Via UWSGI/NGINX)
- Wordpress (Via FASTCGI/NGINX)
- PHPMyAdmin (MariaDB)
- PGAdmin (PostgreSQL)
- Qbittorrent
- Use Flask instead of wordpress as default blog
- Jellyfin
- SSL for all subdomains / Services (Not just the main domain)
Screenshots
Installation and configuration
Requirements
- Docker
- Docker Compose
- Git
- Web domain (I use OVH)
- Open port 80 and 443 on your router (I use a Orange box with default IP)
- All requirements for my Flask website (See README.md)
Clone
Clone this repository to your local machine using:
git clone --recurse-submodules --remote-submodules https://github.com/bensuperpc/infrastructure.git
Go to the folder
cd infrastructure
Get the SSL certificate
Keep original config file
cp nginx-conf nginx-conf-original
Remove the old config file
rm -fr nginx-conf
Copy nginx-conf-cert to nginx-conf, for temporary use to get the SSL certificate
cp -r nginx-conf-cert nginx-conf
Replace certbot commands in docker-compose.yml, and replace bensuperpc.org by your domain
command: certonly --webroot --webroot-path=/var/www/html --email bensuperpc@bensuperpc.fr --agree-tos --rsa-key-size 4096 --no-eff-email --verbose --noninteractive --keep-until-expiring --domain www.bensuperpc.org --domain bensuperpc.org
With to get the SSL certificate
command: certonly --webroot --webroot-path=/var/www/html --email bensuperpc@bensuperpc.fr --agree-tos --rsa-key-size 4096 --no-eff-email --verbose --noninteractive --staging --domain www.bensuperpc.org --domain bensuperpc.org
Run the docker-compose and exit with CTRL+C and when you have the SSL certificate
make start-at
Replace certbot commands in docker-compose.yml to update and renew the SSL certificate
command: certonly --webroot --webroot-path=/var/www/html --email bensuperpc@bensuperpc.fr --agree-tos --rsa-key-size 4096 --no-eff-email --verbose --force-renewal --domain www.bensuperpc.org --domain bensuperpc.org
Run the docker-compose to update and renew the SSL certificate and exit with CTRL+C when you have the SSL certificate
make start-at
Now you can replace the certbot commands in docker-compose.yml with the original one
command: certonly --webroot --webroot-path=/var/www/html --email bensuperpc@bensuperpc.fr --agree-tos --rsa-key-size 4096 --no-eff-email --verbose --noninteractive --keep-until-expiring --domain www.bensuperpc.org --domain bensuperpc.org
Flask website
You can follow the README.md to install the Flask website.
Wordpress website
For the Wordpress website, you can configure in GUI when you go to the website.
Start the infrastructure
Start the website with:
make start-at
Stop the website with:
make stop
URL
You can access to the website with:
- bensuperpc.org and www.bensuperpc.org (Wordpress for now)
- flask.bensuperpc.org and www.flask.bensuperpc.org (Flask website, no SSL for now)
- phpmyadmin.bensuperpc.org and www.phpmyadmin.bensuperpc.org (PHPMyAdmin for MariaDB)
- pgadmin.bensuperpc.org and www.pgadmin.bensuperpc.org (PGAdmin for PostgreSQL)
- qbittorrent.bensuperpc.org and www.qbittorrent.bensuperpc.org (Qbittorrent)
Build with
- Wordpress
- Gnu Make
- Github API
- Github Actions
- Docker
- Docker Compose
- Docker Hub
- Digital Ocean
- Digital Ocean - How To Install WordPress with Docker Compose
- PGAmin
- Qbittorrent
- Jellyfin
- Letsencrypt
- Certbot
- Nginx
- UWSGI