Hi there, this is a kind of mirror of my private docker-compose infrastructure. I'm currently moving on to kubernetes
and wanted to make this repo public now, so others might have a more simple start to container infrastructure.
This Repo just contains a collection of public services and not my own ones.
For creating the infrastructure just go to the ansible
directory and execute install-server.sh
. This will ask you for some inputs and will automatically setup your new VPS.
In order to keep your setup cleaned up, put this command in your CRON and run it something like once a day. This will prevent rapidly growing storage because it will delete unused docker ressources.
docker system prune -a && docker volume prune
Sometimes when I start my server, there is some instance of another server running and using an IP i've defined in Docker.
With netset -nlp | grep 27017
you can look, which service is currently using this port and kill it.
For Monitoring I use a Grafana
, Prometheus
, Loki
and Watchtower
Stack.
Grafana and Prometheus are used for Metrics and Loki is the logging server/database.
Watchtower is a service, that checks in defined intervals if there is any update for the container image. If there is one, it will pull the update and restart the container. You wont must make updates manually again. Add following label to your containers, that you want to get updated by watchtower. Some services will break when doing this (f.e. Mailcow).
label:
- com.centurylinklabs.watchtower.enable="true"
In order to sent logs to Loki you first need to install the loki logging driver.
docker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions
If installed add this config to your docker-compose
file.
x-logging:
&default-logging
driver: loki
options:
mode: non-blocking
loki-url: http://localhost:3100/loki/api/v1/push
loki-external-labels: host=corusm.de,stack=keila
To your service you must then add logging: *default-logging
.
For backups I use rclone
which is similar to rsync
but different. rclone
can rsync
files to your cloud provider. So via rsync
links I copy these files in my cloud.
As a reverse proxy I use traefik, which does the whole certificate stuff for me. Configs are visible in my docker-compose files. In order to get this repo to work for you, you must change my domain to yours.
Service | Description |
---|---|
Mailcow-Dockerized | Self-Hosted E-Mail Server |
Bitwarden | Self-Hosted Password Manager |
Keila | Open-Source Newsletter Tool |
LogSeq | A privacy-first, open-source platform for knowledge management and collaboration. |
Mattermost | Open-Source Slack Alternative |
Metrics | Grafana, Prometheus, Loki Stack |
MLFlow | Machine-Learning Dev-Ops Tool |
Shlink | Self-Hosted Bit.ly alternative |
Vault | Harshicorp Vault for Secret Management |
Wireguard | Self-Hosted VPN Tunnel |
Registry | Self-Hosted Docker-Registry |
Jenkins | Open-Source CI/CD Tool |
Code-Server | VSCode in the Web |
Gotify | Self-Hosted Notification Server |
Jupiter-Notebook | Jupiter Notebook Server |
LanguageTool | Open-Source Grammerly Alternative |
Nextcloud | Self-Hosted Cloud (Calendar, Docs, Files) |
Penpot | Prototyping Tool (Figma Alternative) |
Radicale | Self-Hosted CalDav/CardDav (Calendar and Contacts) |
Sharelatex | Self-Hosted Overleaf Server |
Traefik | Reverse Proxy Service |
Watchtower | Automated Container Updates |
FreshRSS | RSS Reader |