this post was submitted on 02 Aug 2025
211 points (99.1% liked)

Selfhosted

60742 readers
158 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

Detailed Rules Post

  1. Be civil.

  2. No spam.

  3. Posts are to be related to self-hosting.

  4. Don't duplicate the full text of your blog or readme if you're providing a link.

  5. Submission headline should match the article title.

  6. No trolling.

  7. Promotion posts require active participation, with an account that is at least 30 days old. F/LOSS without a paywall has exceptions, with requirements. See the rules link for details. Tags [CBH] or [AIP] are required, see the links in Rule 8 for details.

  8. AI-related discussions and AI-involved promotional posts have additional requirements for tagging, as noted in Rule 7 and the AI & Promotional Post Expanded Rules post, and find example disclosures here.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 3 years ago
MODERATORS
 

I don't usually post, but thought I'd share.

I rebuilt my homelab with OpenTofu. Now my entire setup, from containers to networking, lives in a Git repo.

The best part is that new services get published automatically. I just set a flag in the code, and it builds the Caddy proxy or Cloudflare tunnel for me. No more manual config editing.

Here's my quick write-up on it: https://yuris.dev/blog/homelab-opentofu

And the code is all public if you want to see how it works: https://github.com/yurisasc/homelab

Hope this is interesting to someone. Happy to answer any questions if you have them. Curious to hear if anyone else has gone down this particular rabbit hole with IaC for their Docker stack.

you are viewing a single comment's thread
view the rest of the comments
[–] cichy1173@szmer.info 11 points 11 months ago

Finally found someone who uses OpenTofu for Docker too. I saw many opinions and thinking that dropping Compose for OpenTofu/Terraform is silly, because Compose is "more native". I use OpenTofu for Docker too, but I structured code in other way, I have a module that mimics compose in some way, but is simpler for me to use. I published module here: https://codeberg.org/cichy1173/cichyform

I do not published my IaC, but I can show how code looks like for service:

module "adguard" {
  source = "git::ssh://git@codeberg.org/cichy1173/mylab-opentofu.git//modules/docker_service?ref=docker_service-v1.1"
  service_name = "adguardhome"
  image_name   = "adguard/adguardhome:latest"

  volumes = [
    {
      host_path      = "/home/cichy/docker/adguard/adguard/conf"
      container_path = "/opt/adguardhome/conf"
    },
    {
      host_path      = "/home/cichy/docker/adguard/adguard/work"
      container_path = "/opt/adguardhome/work"
    }
  ]
  
  ports = [
    {
      internal = 53
      external = 53
      protocol = "udp"
    },
    {
      internal = 80
      external = 80
    },
    {
      internal = 443
      external = 443
    },
    {
      internal = 853
      external = 853
    },
    {
      internal = 3000
      external = 3000
    }
  ]

  environment_variables = []
}

I also created an Forgejo Action to run plan on stacks with this module to check if there is a new image under the tag :latest. Oh, and also I manage Adguard Home using OpenTofu, it is very powerful: https://codeberg.org/cichy1173/adguard-home-cm-repository