Auto-update blog content from Obsidian: 2026-01-31 10:46:44
All checks were successful
Blog Deployment / Check-Rebuild (push) Successful in 6s
Blog Deployment / Build (push) Has been skipped
Blog Deployment / Deploy-Staging (push) Successful in 9s
Blog Deployment / Test-Staging (push) Successful in 2s
Blog Deployment / Merge (push) Successful in 6s
Blog Deployment / Deploy-Production (push) Successful in 9s
Blog Deployment / Test-Production (push) Successful in 2s
Blog Deployment / Clean (push) Has been skipped
Blog Deployment / Notify (push) Successful in 2s
All checks were successful
Blog Deployment / Check-Rebuild (push) Successful in 6s
Blog Deployment / Build (push) Has been skipped
Blog Deployment / Deploy-Staging (push) Successful in 9s
Blog Deployment / Test-Staging (push) Successful in 2s
Blog Deployment / Merge (push) Successful in 6s
Blog Deployment / Deploy-Production (push) Successful in 9s
Blog Deployment / Test-Production (push) Successful in 2s
Blog Deployment / Clean (push) Has been skipped
Blog Deployment / Notify (push) Successful in 2s
This commit is contained in:
@@ -9,31 +9,46 @@ categories:
|
|||||||
---
|
---
|
||||||
## Intro
|
## Intro
|
||||||
|
|
||||||
In this post, I'm not gonna tell you what are the good practices. I just want to point out how I'm deploying new application in my homelab.
|
In this post, I'm not gonna tell you what are the good practices. I just want to point out how, currently, I'm deploying new application in my homelab.
|
||||||
|
|
||||||
The idea is to make a kind of testimony, that at this point in time, I was doing that way.
|
The idea is to make a kind of testimony, that at this point in time, I was doing that way.
|
||||||
|
|
||||||
This is method is quite simple but involve quite a lot of manual operations
|
This is method is quite simple but involve quite a lot of manual operations
|
||||||
|
|
||||||
## Current Platform
|
## Current Platform
|
||||||
|
|
||||||
|
Let me break down the principal components involved:
|
||||||
### Docker
|
### Docker
|
||||||
I deploy using Docker whenever it is possible
|
(Explain briefly Docker)
|
||||||
I use a VM in my Proxmox cluster
|
|
||||||
|
I deploy using Docker whenever it is possible.
|
||||||
|
|
||||||
|
I'm using Docker compose for years now. At this time I only had a single server. Now I'm using VMs and I could migrate to a Docker Swarm, but I didn't. It might be a good idea, but this is not what I plan to do for the future.
|
||||||
|
For the moment, I still use a single VM to host my Docker applications, which is more or less a clone of my old physical server.
|
||||||
|
|
||||||
### Proxmox
|
### Proxmox
|
||||||
|
(Explain briefly Proxmox)
|
||||||
|
|
||||||
|
My VM is hosted on my Proxmox cluster
|
||||||
Proxmox cluster composed of 3 nodes, highly available with a Ceph distributed storage
|
Proxmox cluster composed of 3 nodes, highly available with a Ceph distributed storage
|
||||||
|
|
||||||
### Traefik
|
### Traefik
|
||||||
|
(Explain briefly Traefik)
|
||||||
|
|
||||||
Traefik is installed on the docker host to manage the HTTPS connections
|
Traefik is installed on the docker host to manage the HTTPS connections
|
||||||
|
|
||||||
### OPNsense
|
### OPNsense
|
||||||
|
(Explain briefly OPNsense)
|
||||||
|
|
||||||
On the fronted, there is an HA OPNsense cluster which redirect the HTTPS connections to Traefik using a Caddy plugin. TLS is not terminated by Caddy but only passed through to Traefik which manages the TLS certificates automatically.
|
On the fronted, there is an HA OPNsense cluster which redirect the HTTPS connections to Traefik using a Caddy plugin. TLS is not terminated by Caddy but only passed through to Traefik which manages the TLS certificates automatically.
|
||||||
|
|
||||||
## Deploy New Application
|
### Gitea
|
||||||
|
(Explain briefly Gitea)
|
||||||
|
|
||||||
In my homelab, I host a Gitea server. Inside I have a private repository where I host the docker compose configurations for my applications
|
In my homelab, I host a Gitea server. Inside I have a private repository where I host the docker compose configurations for my applications
|
||||||
|
|
||||||
|
## Deploy New Application
|
||||||
|
|
||||||
I have a template docker-compose.yml which looks like this:
|
I have a template docker-compose.yml which looks like this:
|
||||||
```yml
|
```yml
|
||||||
services:
|
services:
|
||||||
@@ -86,4 +101,6 @@ Most of the time, updating an application is straightforward. I update the image
|
|||||||
If the tests are successful I continue to update until I reach the latest. Once reached, I commit the update in the repository.
|
If the tests are successful I continue to update until I reach the latest. Once reached, I commit the update in the repository.
|
||||||
|
|
||||||
|
|
||||||
## Conclusion
|
## Conclusion
|
||||||
|
|
||||||
|
Using Docker
|
||||||
Reference in New Issue
Block a user