You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

98 lines
3.2 KiB
Markdown

4 years ago
# Selfhosted-Apps-Docker
4 years ago
4 years ago
###### guide by example
4 years ago
4 years ago
---
4 years ago
![logo](https://i.imgur.com/u5LH0jI.png)
4 years ago
4 years ago
---
4 years ago
* [caddy_v2](caddy_v2/) - reverse proxy
4 years ago
* [bitwarden_rs](bitwarden_rs/) - password manager
* [bookstack](bookstack/) - notes and documentation
* [borg_backup](borg_backup/) - backup utility
* [ddclient](ddclient/) - automatic DNS update
4 years ago
* [dnsmasq](dnsmasq/) - DNS and DHCP server
4 years ago
* [homer](homer/) - homepage
* [nextcloud](nextcloud/) - file share & sync
4 years ago
* [portainer](portainer/) - docker management
4 years ago
* [prometheus_grafana](prometheus_grafana/) - monitoring
* [watchtower](watchtower/) - automatic docker images update
4 years ago
* [arch_linux_host_install](arch_linux_host_install)
4 years ago
4 years ago
The core of the setup is Caddy reverse proxy.</br>
It's described in most details.
4 years ago
# Some docker basics and some info
4 years ago
4 years ago
### Compose and environment variables
4 years ago
4 years ago
You **do not** need to fuck with `docker-compose.yml` to get something up,
simple copy paste should suffice.
4 years ago
You **do** need to fuck with `.env` file, that's where all the variables are.
4 years ago
4 years ago
Sometimes the `.env` file is used as `env_file`
4 years ago
4 years ago
* `.env` - actual name of a file, used only by compose.</br>
It is used automatically just by being in the directory
4 years ago
with the `docker-compose.yml`</br>
4 years ago
Variables set there are available during the building of the container,
4 years ago
but unless named in the `enviroment:` option they are not available
4 years ago
in the running containers.
4 years ago
* `env_file` - an option in compose that defines existing external file.</br>
Variables set in this file will be available in the running container,
but not in compose.
So to not have polluted huge ass compose file, or to not have multiple places
4 years ago
where changes need to be made when adding a variable... `env_file: .env` BAM.
4 years ago
4 years ago
Only issue is that all variables from `.env` are available in
containers that use this.</br>
4 years ago
That can lead to potential conflicts and clashes, looking at you nextcloud.
4 years ago
4 years ago
In those cases variables names are declared per container.
4 years ago
4 years ago
But `env_file: .env` is just easier, prettier... and mostly painless.
4 years ago
4 years ago
---
### Images latest tag
All images are without any tag, which defaults to `latest` tag being used.
4 years ago
This is [frowned upon](https://vsupalov.com/docker-latest-tag/),
4 years ago
but feel free to choose a version and sticking with it once it goes to real use.
4 years ago
4 years ago
---
4 years ago
### Bind mount
4 years ago
No docker volumes are used. Directories and files from host
4 years ago
are bind mounted in to containers.</br>
Don't feel like I know all of the aspects of this,
4 years ago
but I know its easier to edit a random file on a host,
or backup a directory when its just there, sitting on the host.
4 years ago
---
4 years ago
### 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 username.
Only the password changes as it is one of yours accounts apikey value.
4 years ago
---
4 years ago
### Cloudflare
For managing DNS records. The free tier provides lot of managment options and
benefits. Like proxy between your domain/subdomain 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.
[How to move to cloudflare.](https://support.cloudflare.com/hc/en-us/articles/205195708-Changing-your-domain-nameservers-to-Cloudflare)