My infrastructure with docker and Caddy for bensuperpc.org (WIP)
Go to file
Bensuperpc 247e344a52 Remove ghost
Signed-off-by: Bensuperpc <bensuperpc@gmail.com>
2024-08-24 08:47:55 +02:00
.gitea/workflows Move CI 2024-05-12 17:56:50 +02:00
.github Add it-tools 2024-08-23 17:19:24 +02:00
infrastructure Remove ghost 2024-08-24 08:47:55 +02:00
.gitignore Update example config 2023-11-25 17:39:20 +01:00
.gitmodules Remove old website 2023-03-19 19:15:53 +01:00
LICENSE Initial commit 2022-11-24 13:29:36 +01:00
Makefile Remove ghost 2024-08-24 08:47:55 +02:00
README.md Remove linkstack 2024-08-24 08:44:33 +02:00

Infrastructure

My personal infrastructure for my servers and services.

About

This is my infrastructure. It's a collection of scripts and configuration files that I use to manage my servers and services. It uses caddy 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. If you have any questions or suggestions, feel free to open an issue or a pull request.

Features

  • caddy 2 reverse proxy
  • Docker / docker-compose
  • Caddy
  • Wordpress (Via FASTCGI/caddy)
  • Adminer (MariaDB)
  • Jellyfin (Media server)
  • Gitea (Git server)
  • Uptime Kuma (Monitoring)
  • qbittorrent and transmission (Torrent client/server)
  • SyncThing (File synchronization)
  • PsiTransfer (File sharing)
  • it-tools (Tools for IT)
  • Privatebin (Pastebin)

Screenshots

Installation and configuration

Requirements

To avoid get rate limit from letsencrypt (10 certificates per 3 hours), you need to disable some certificates in the caddyfiles and enable them 3h later...

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

Configure the domain

For all bensuperpc.org, you need to replace it with your domain, example: mydomain.com, so the same for bensuperpc.com ect...

find . \( -type d -name .git -prune \) -o -type f -print0 | xargs -0 sed -i 's/bensuperpc.org/mydomain.com/g'

Check if all bensuperpc.* are replaced by your domain in Caddyfile

And then, caddy will generate the certificate for you and renew it automatically :D

Domain name Type Description
bensuperpc.org Main Main domain
adminer.bensuperpc.org Sub Adminer for MariaDB for wordpress only
uptimekuma.bensuperpc.org Sub Uptime Kuma for monitoring
qbittorrent.bensuperpc.org Sub Torrent client/server
transmission.bensuperpc.org Sub Torrent client/server
git.bensuperpc.org Sub Gitea for git
link.bensuperpc.org Sub For link shortener
jellyfin.bensuperpc.org Sub Jellyfin for media server
syncthing.bensuperpc.org Sub SyncThing for file synchronization
psitransfer.bensuperpc.org Sub PsiTransfer for file sharing
it-tools.bensuperpc.org Sub Tools for IT
privatebin.bensuperpc.org Sub Pastebin
bensuperpc.com Main Redirect to bensuperpc.org
bensuperpc.fr Main Redirect to bensuperpc.org
bensuperpc.net Main Redirect to bensuperpc.org
bensuperpc.ovh Main Redirect to bensuperpc.org

Configure the infrastructure

You need to configure the infrastructure with your own configuration.

You can generate a password with 32 characters:

openssl rand -base64 32

For the wordpress.env file, you need to change the password and user for the database.

WORDPRESS_DB_USER=bensuperpc
WORDPRESS_DB_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw
WORDPRESS_DB_NAME=wordpress
WORDPRESS_DB_HOST=wordpress_db:3306

For wordpress_db.env file, you need to change the password(s) and user for the database.

MARIADB_ROOT_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ
MARIADB_USER=bensuperpc
MARIADB_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw
MARIADB_DATABASE=wordpress

For adminer.env file, you need to change the password(s) and user for the database.

MYSQL_ROOT_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ
MYSQL_USER=bensuperpc
MYSQL_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw
ADMINER_DEFAULT_SERVER=wordpress_db

For gitea.env file, you need to change the password(s) and user for the database.

GITEA__database__DB_TYPE=mysql
GITEA__database__HOST=database_gitea:3306
GITEA__database__NAME=gitea
GITEA__database__USER=bensuperpc
GITEA__database__PASSWD=K7s5yoHknnEd7vsZoxb8I3dK9mjToF1j
GITEA__security__SECRET_KEY=ykcZt23an1E4lFHWvrCKdAyt16WAiK9c

For gitea_db.env file, you need to change the password(s) and user for the database.

MYSQL_ROOT_PASSWORD=xpc4zIhHZzWKqVHcjBu4aW6aS7jG8d7X
MYSQL_USER=bensuperpc
MYSQL_PASSWORD=K7s5yoHknnEd7vsZoxb8I3dK9mjToF1j
MYSQL_DATABASE=gitea

For psitransfer.env file, you need to change the password(s) and user for the database.

PSITRANSFER_ADMIN_PASS=n9jLVNT9QUotTJTT91JqH4GyBTg9pvEn

Start the infrastructure

Start the website with:

make start-at

Stop the website with (or CTRL+C with the previous command):

make stop

Remove countainers with:

make down

All services

You can find all service on this table:

Service Description URL
Wordpress Wordpress website bensuperpc.org and www.bensuperpc.org
Adminer Adminer for MariaDB adminer.bensuperpc.org
Uptime Kuma Uptime Kuma for monitoring uptimekuma.bensuperpc.org
qbittorrent qbittorrent server qbittorrent.bensuperpc.org
transmission transmission server transmission.bensuperpc.org
Gitea Gitea for git git.bensuperpc.org
Jellyfin Jellyfin for media server jellyfin.bensuperpc.org
SyncThing SyncThing for file synchronization syncthing.bensuperpc.org
PsiTransfer PsiTransfer for file sharing psitransfer.bensuperpc.org
it-tools Tools for IT it-tools.bensuperpc.org
Privatebin Pastebin privatebin.bensuperpc.org

You can disable some services by removing the service name in PROFILES variable in the Makefile file.

To enable the gitea CI: https://medium.com/@lokanx/how-to-build-docker-containers-using-gitea-runners-600729555e07

Sources

License

License