self-host/README.md

74 lines
3.1 KiB
Markdown

# self-host
Configuration of self-hosted third-party software on my Hetzner Cloud VPS.
![](./diagrams/directory-structure.png)
## Third-party applications
### Docker-based
#### Services
| Server port | Docker port | Subdomain | Service | Description |
| ----------- | ----------- | ---------------------------- | -------- | -------------------------- |
| 8000 | 3000 | grafana.systemsobscure.net | Grafana | Server logs and monitoring |
| 8001 | 9090 | bookmarks.systemsobscure.net | Linkding | Article bookmarking tool |
| 8002 | 3000 | forgejo.systemsobscure.net | Forgejo | Git forge |
| 8004 | 3000 | wakapi.systemsobscure.net | Wakapi | Coding statistics tracker |
| 8005 | 8080 | miniflux.systemsobscure.net | Miniflux | RSS aggregator |
#### Service data
Some applicaton data is stored in a network-attached Hetzner Storagebox drive
("Storagebox Alpha"). Docker volumes are mapped to this location.
This device is permanantly mounted using the [CIFS
protocol](https://www.lenovo.com/gb/en/glossary/what-is-common-internet-file-system-cifs/)
at `/mnt/storagebox_alpha`, as specified in `/etc/fstab`.
Other application data is stored on the small harddrive of the VPS:
| Service | Data | Location | Description |
| ------- | --------------- | --------------------- | ----------------------------------------------- |
| Forgejo | MySQL database | `/data/mysql/forgejo` | Database data only. Repositories stored in NAS. |
| Wakapi | SQLite database | `/data/sqlite/wakapi` | |
### Native-based ("bare metal")
#### Forgejo runners
Although my Forgejo instance runs in Docker, the `forgejo-runner` [software](https://forgejo.org/docs/latest/admin/actions/runner-installation/) that manages the
runners necessary to execute [Forgejo Actions](https://forgejo.org/docs/v8.0/user/actions/) is installed on the metal.
This service runs as a `systemd` service configured at
`/etc/systemd/system/forgejo-runner.service`.
I currently only have a single global runner in operation (`self-host-server`)
that runs on `ubuntu-latest`.
#### Garage object storage
I run a single-zone instance of [Garage](https://garagehq.deuxfleurs.fr/) at
`s3.systemsobscure.net`. This subdomain is used for authenticated API and
`awscli` access to my buckets.
Garage is configured at `/etc/garage.toml`. Garage runs as a `systemd` service configured at
`/etc/systemd/system/garage.service`.
Certain buckets are publicly exposed to the Internet on subdomains for un-authenticated
access:
- [eolas.s3.systemsobscure.net](https://eolas.s3.systemsobscure.net/test.txt)
The naming convention here is
`[bucket-name].[garage_instance].[server_address]`.
## My applications
> All the applications that I have built and which I currently host are installed on the bare metal of the
> server and do not use Docker.
### systemsobscure.blog
This is a static website served from the `/var/www/systemsobscure.blog` directory.