I am slowly removing my dependency on cloud services (google in particular) by self-hosting open alternatives.
Herein lies the docker-compose.yml file with which I establish my personal web site and various web apps under sub-domains.
I use this file with docker-compose to set up the following containers:
Container Name | Image | Website | Description |
---|---|---|---|
nginx-proxy | nginxproxy/nginx-proxy | nginx-proxy | Used to reverse-proxy the domain and sub-domains Formerly the image was named jwilder/nginx-proxy. |
acme-companion | nginxproxy/acme-companion | acme-companion | Used for automatic Let's Encrypt / ACME domain validation to facilitate encryption of the domain and sub-domains. Formerly named jrcs/letsencrypt-nginx-proxy-companion. |
nextcloud | /nextcloud | Nextcloud | My personal nextcloud instance. General file storage. |
nextcloud-db | linuxserver/mariadb | MariaDB | The database used by the nextcloud container. |
nextcloud-cron | rcdailey/nextcloud-cronjob | nextcloud-cronjob | Used to regularly run the cron.php script for my nextcloud instance. |
nextcloud-bu | registry.gitlab.com/clewsy/ncbu | ncbu | Container for syncing the nextcloud data and database for convenient backup access. |
collabora | collabora/code | CODE | Integrates with my nextcloud instance to facillitate online, web-based file editing. |
navidrome | deluan/navidrome | Navidrome | For streaming music - either via the webui or an f-droid app (I like UltraSonic). |
vaultwarden | vaultwarden/server | vaultwarden | My personal password management server (formerly known as bitwardenrs/server). |
calibre-web | linuxserver/calibre-web | calibre-web | Web-based ebook library. Uses library/database created and managed with calibre. |
php | /php | php | Accessed by nginx containers in order to execute php scripts. |
nginx-clews.pro | /nginx | NGINX | Html and css files for my personal web site clews.pro. The html and css for clews.pro is also contained within this repository. |
nginx-clews.dev | /nginx | NGINX | Html and css files for my other personal web site clews.dev. The html and css for clews.dev is also contained within this repository. |
nginx-clews.tech | /nginx | NGINX | Html and css files for one more personal web site clews.tech. The html and css for clews.tech is also contained within this repository. |
watchtower | containrrr/watchtower | Watchtower | Configured to check for updated container images. Will download and run automatically. |
I switched from the official mariadb container for the nextcloud database to the linuxserver/mariadb container because the linuxserver.io developers allow you to specify uid and gid - this fixed the errors I encountered when attempting to create physical backups of database files belonging to an unknown user (uid 999).
Another switch I made was the music-streaming service I use. Previously I had airsonic-advanced set up, but I migrated to navidrome which seems more modern and up-to-date.
The nextcloud-bu container (GitLab image: registry.gitlab.com/clewsy/ncbu, Docker Hub image: clewsy/ncbu) is my own project. The source is on gitlab. I tried a few different methods of backing up my nextcloud files and database but eventually decided it would be an ideal project for learning how to create my own docker image. Originally I just hosted the image at Docker Hub, but changes have made it impossible to automate image builds without a paid account. So I now recommend pulling the image from GitLab's container registry.
Also in this repo is a systemd unit file (clews.service). I created this so that docker-compose is run automatically after a reboot of the host machine (just in case the containers were brought down).
The clews.pro/html directory contains the html and css I developed for my personal web site.