mirror of
https://github.com/DoTheEvo/selfhosted-apps-docker.git
synced 2026-07-03 14:06:40 +02:00
update
This commit is contained in:
@@ -14,57 +14,58 @@
|
||||
* [borg_backup](borg_backup/) - backup utility
|
||||
* [ddclient](ddclient/) - automatic DNS update
|
||||
* [dnsmasq](dnsmasq/) - DNS and DHCP server
|
||||
* [gotify / ntfy / signal](gotify-ntfy-signal/) - instant notifications apps
|
||||
* [homer](homer/) - homepage
|
||||
* [minecraft](minecraft/) - game server
|
||||
* [nextcloud](nextcloud/) - file share & sync
|
||||
* [jellyfin](jellyfin/) - video and music streaming
|
||||
* [kopia](kopia_backup/) - backup utility replacing borg
|
||||
* [minecraft](minecraft/) - game server
|
||||
* [meshcrentral](meshcrentral/) - web based remote desktop, like teamviewer or anydesk
|
||||
* [rustdesk](rustdesk/) - remote desktop, like teamviewer or anydesk
|
||||
* [nextcloud](nextcloud/) - file share & sync
|
||||
* [opnsense](opnsense/) - a firewall, enterprise level
|
||||
* [qbittorrent](qbittorrent/) - video and music streaming
|
||||
* [portainer](portainer/) - docker management
|
||||
* [prometheus_grafana](prometheus_grafana/) - monitoring
|
||||
* [unifi](unifi/) - mangment utility for ubiquiti devices
|
||||
* [unifi](unifi/) - management utility for ubiquiti devices
|
||||
* [snipeit](snipeit/) - IT inventory management
|
||||
* [trueNAS scale](trueNASscale/) - network file sharing
|
||||
* [watchtower](watchtower/) - automatic docker images update
|
||||
* [wireguard](wireguard/) - the one and only VPN to ever consider
|
||||
* [zammad](zammad/) - ticketing system
|
||||
* [arch_linux_host_install](arch_linux_host_install)
|
||||
|
||||
Can also check the directories listed at otp for work in progress
|
||||
Can also just check the directories listed at the top for work in progress
|
||||
|
||||
Check also [StarWhiz / docker_deployment_notes](https://github.com/StarWhiz/docker_deployment_notes/blob/master/README.md)<br>
|
||||
Who documents self hosted apps in similar format and also uses caddy for reverse proxy
|
||||
Repo documents self hosted apps in similar format and also uses caddy for reverse proxy
|
||||
|
||||
# How to self host various services
|
||||
# Core concepts
|
||||
|
||||
You do need to have **basic linux and basic docker-compose knowledge**,
|
||||
the shit here is pretty hand holding and detailed, but it still should not be
|
||||
- `docker-compose.yml` do not need any editing to get started,
|
||||
changes are to be done in the `.env` file.
|
||||
- Not using `ports` directive if theres only web traffic in a container.<br>
|
||||
Theres an expectation of running a reverse proxy which makes mapping ports
|
||||
on docker host unnecessary. Instead `expose` is used which is basically
|
||||
just documentation.<br>
|
||||
- For persistent storage bind mount `./whatever_data` is used.
|
||||
No volumes, nor static path somewhere... just relative path next to compose file.
|
||||
|
||||
# Requirements
|
||||
|
||||
**Basic linux and basic docker-compose knowledge.**
|
||||
The shit here is pretty hand holding and detailed, but it still should not be
|
||||
your first time running a docker container.
|
||||
|
||||
a certain format is followed in the services pages
|
||||
|
||||
* **Purpose & Overview** - basic overview and intented use
|
||||
* **Files and directory structure** - lists all the files/folder involved
|
||||
and their placement
|
||||
* **docker-compose** - the recipe file how to build a container, with .env file too
|
||||
* **Reverse proxy** - reverse proxy specific settings, if a container has
|
||||
a webserver providing web interface
|
||||
* **Update** - how to update the container, usually just running Watchtower
|
||||
* **Backup and restore** - of the entire container using borg backup
|
||||
* **Backup of just user data** - steps to backup databases and other user data
|
||||
* **Restore the user data** - steps to restore user data in a brand new setup
|
||||
|
||||
|
||||
The core of the setup is Caddy reverse proxy.</br>
|
||||
It's described in most details.
|
||||
|
||||
# Some extra info
|
||||
|
||||
Kinda the core of the setup is Caddy reverse proxy.</br>
|
||||
It's described in most details, it's really amazingly simple but robust software.
|
||||
|
||||
### Compose
|
||||
|
||||
When making changes use `docker-compose down` and `docker-compose up -d`,
|
||||
not just restart or stop/start.
|
||||
|
||||
* you **do not** need to fuck with `docker-compose.yml` to get something up,
|
||||
simple copy paste should suffice
|
||||
* you **do** need to fuck with `.env` file, that's where all the variables are
|
||||
|
||||
Often the `.env` file is used as `env_file`,
|
||||
which can be a bit difficult concept at a first glance.
|
||||
|
||||
@@ -73,9 +74,9 @@ which can be a bit difficult concept at a first glance.
|
||||
* `.env` - actual name of a file that is used only by compose.</br>
|
||||
It is used automatically just by being in the directory
|
||||
with the `docker-compose.yml`</br>
|
||||
Variables in it are available during the building of the container,
|
||||
Variables in it are available during the building of a container,
|
||||
but unless named in the `environment:` option, they are not available
|
||||
in the running containers.
|
||||
once the container is running.
|
||||
* `env_file` - an option in compose that defines an existing external file.</br>
|
||||
Variables in this file will be available in the running container,
|
||||
but not during building of the container.
|
||||
@@ -89,8 +90,8 @@ looks much cleaner, less cramped.
|
||||
|
||||
Only issue is that **all** variables from the `.env` file are available in
|
||||
all containers that use this `env_file: .env` method.</br>
|
||||
That can lead to potential issues if a container picks up enviroment
|
||||
variable that is intented for a different container of the stack.
|
||||
That can lead to potential issues if a container picks up environment
|
||||
variable that is intended for a different container of the stack.
|
||||
|
||||
In the setups here it works and is tested, but if you start to use this
|
||||
everywhere without understanding it, you can encounter issues.
|
||||
@@ -101,39 +102,16 @@ the variables directly in the compose file only under containers that want them.
|
||||
|
||||
### Docker images latest tag
|
||||
|
||||
All images are without any tag, which defaults to `latest` tag being used.</br>
|
||||
Most of the time the images are without any tag,
|
||||
which defaults to `latest` tag being used.</br>
|
||||
This is [frowned upon](https://vsupalov.com/docker-latest-tag/),
|
||||
but feel free to choose a version and sticking with it once it goes to real use.
|
||||
|
||||
---
|
||||
|
||||
### Bind mount
|
||||
|
||||
No docker volumes are used. Directories and files from the host
|
||||
are bind mounted in to containers.</br>
|
||||
Don't feel like I know all of the aspects of this,
|
||||
but I know it's easier to edit a random file on a host,
|
||||
or backup a directory when it's just there, sitting on the host.
|
||||
|
||||
---
|
||||
|
||||
### SendGrid
|
||||
|
||||
For sending emails free sendgrid account is used, which provides 100 free emails
|
||||
a day.
|
||||
|
||||
The configuration in `.env` files is almost universal, `apikey` is
|
||||
really the username, not some placeholder.
|
||||
Only the password(actual value of apikey) changes,
|
||||
which you generate in apikey section on SendGrid website.
|
||||
|
||||
Though I heard complains lately that is not as easy as it was to register on SendGrid.
|
||||
but feel free to put there the current version to lower the chance of a fuckup.
|
||||
|
||||
---
|
||||
|
||||
### Cloudflare
|
||||
|
||||
For managing DNS records. The free tier provides lot of managment options and
|
||||
For managing DNS records. The free tier provides lot of management options and
|
||||
benefits. Like proxy between your domain and your server, so no one
|
||||
can get your public IP just from your domain name. Or 5 firewall rules that allow
|
||||
you to geoblock whole world except your country.
|
||||
@@ -148,17 +126,49 @@ you to geoblock whole world except your country.
|
||||
|
||||

|
||||
|
||||
htop like utility for quick containers managment.
|
||||
htop like utility for quick containers management.
|
||||
|
||||
It is absofuckinglutely amazing in how simple yet effective it is.
|
||||
|
||||
* hardware use overview, so you know which container uses how much cpu, ram, bandwith, IO,...
|
||||
* hardware use overview, so you know which container uses how much cpu, ram, bandwidth, IO,...
|
||||
* detailed info on a container, it's IP, published and exposed ports, when it was created,..
|
||||
* quick managment, quick exec in to a container, check logs, stop it,...
|
||||
* quick management, quick exec in to a container, check logs, stop it,...
|
||||
|
||||
Written in Go, so its super fast and installation is trivial when it is a single binary,
|
||||
as likely your distro does not have it in repos. If you use arch, like I do, its on AUR.
|
||||
|
||||
---
|
||||
|
||||
### Archlinux as a docker host
|
||||
|
||||
My go-to is archlinux as I know it the best.
|
||||
Usually in a virtual machine with snapshots before updates.
|
||||
|
||||
For Arch installation I had [this notes](arch_linux_host_install/)
|
||||
on how to install and what to do afterwards.<br>
|
||||
But after [archinstall script](https://wiki.archlinux.org/title/archinstall)
|
||||
started to be included with arch ISO I switched to that.<br>
|
||||
For after the install setup I created
|
||||
[Ansible-Arch repo](https://github.com/DoTheEvo/ansible-arch) that gets shit
|
||||
done in few minutes without danger of forgetting something.<br>
|
||||
Ansible is really easy to use and very easy to read and understand playbooks,
|
||||
so it might be worth the time to check out the concept to setup own ansible scripts.
|
||||
|
||||
The best aspect of having such repo is that it is a dedicated place where
|
||||
one can write solution to issues encountered,
|
||||
or enable freshly discovered feature for all deployments.
|
||||
|
||||
---
|
||||
|
||||
### SendGrid and Sendinblue
|
||||
|
||||
Services often need ability to send emails, for registration, password recset and such...
|
||||
|
||||
I got free sendgrid account which provides 100 free emails a day.
|
||||
But I heard complains that is not as easy as it was to register on SendGrid.
|
||||
|
||||
I also use Sendinblue, I guess it was easy cuz I dont remember anything about it.
|
||||
It works and got 300 mails a day
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user