this post was submitted on 16 Dec 2025
99 points (99.0% liked)

Selfhosted

53767 readers
631 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:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

  7. No low-effort posts. This is subjective and will largely be determined by the community member reports.

Resources:

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

Questions? DM the mods!

founded 2 years ago
MODERATORS
 

hey nerds! i got a lovely email from GitHub this morning that their increasingly vibe-coded, barely-working Actions features are about to get more expensive (charging by the minute for something that notoriously spin-locks is a special flavor of shit sandwich).

i usually just use whatever i’m given at wherever i’m working. i do have a project that i maintain to parse Ollama Modelfiles tho: https://github.com/covercash2/modelfile and to be honest, Actions is the only solution i’ve ever used that came close to sparking joy, simply because it was easy to use and had tons of community mind-share (i’ve definitely heard horror stories and would never stake my business on it), but this price increase and all the other news around GitHub lately has got me side-eying self-hosting solutions for my git projects. Forgejo seems like the way to go for git hosting, but Actions in particular Just Works™️ for me, so i’m kind of dreading setting something up that will be yet another time sink/rabbit hole (just in time for the holidays! 🙃).

i can install most of my tooling with my language toolchain (read: rustup and cargo) which makes things fairly neat, but i just don’t have a sense for what people use outside of Jenkins and Actions.

i thought this community might have some insight beyond the LLM generated listicles that have blighted modern search results.

thanks in advance 🙏

top 50 comments
sorted by: hot top controversial new old
[–] h54@programming.dev 34 points 3 days ago (5 children)

IMO, Gitlab CI/CD blows Github out of the water. They're not even in the same league. I recommend Gitlab + self hosted runners (it's so easy).

I've been using Gitlab for many years and host my own runners as of the past 6 months because I nearly exhausted my monthly free tier runner minutes one month.

[–] xcjs@programming.dev 10 points 2 days ago

I second GitLab CI/CD - it's a CI/CD system that just makes sense to me. That doesn't mean it doesn't have its complexities depending on your needs, but I've overall enjoyed my time working with it.

load more comments (4 replies)
[–] Jayjader@jlai.lu 30 points 3 days ago (6 children)

Forgejo has their own runner: https://forgejo.org/docs/latest/admin/actions/runner-installation/

I've used it on my personal machine, was very easy to setup and mostly compatible with GitHub actions out-of-the-box (including things like actions/checkout@v4).

[–] scrubbles@poptalk.scrubbles.tech 16 points 3 days ago (1 children)

Forgejo runners are great! I found some simple actions to do docker in docker and now build all my images with them!

[–] felbane@lemmy.world 1 points 2 days ago (1 children)

please share, I'm interested in doing the same

[–] scrubbles@poptalk.scrubbles.tech 2 points 2 days ago (1 children)

Sure! I use Kaniko (Although I see now that it's not maintained anymore). I'll probably pull the image in locally to protect it...

Kaniko does the Docker in Docker, and I found an action that I use, but it looks like that was taken down... Luckily I archived it! Make an action in Forgejo (I have an infrastructure group that I add public repos to for actions. So this one is called action-koniko-build and all it has is this action.yml file in it:

name: Kaniko
description: Build a container image using Kaniko
inputs:
  Dockerfile:
    description: The Dockerfile to pass to Kaniko
    required: true
  image:
    description: Name and tag under which to upload the image
    required: true
  registry:
    description: Domain of the registry. Should be the same as the first path component of the tag.
    required: true
  username:
    description: Username for the container registry
    required: true
  password:
    description: Password for the container registry
    required: true
  context:
    description: Workspace for the build
    required: true
runs:
  using: docker
  image: docker://gcr.io/kaniko-project/executor:debug
  entrypoint: /bin/sh
  args:
    - -c
    - |
      mkdir -p /kaniko/.docker
      echo '{"auths":{"${{ inputs.registry }}":{"auth":"'$(printf "%s:%s" "${{ inputs.username }}" "${{ inputs.password }}" | base64 | tr -d '\n')'"}}}' > /kaniko/.docker/config.json
      echo Config file follows!
      cat /kaniko/.docker/config.json
      /kaniko/executor --insecure --dockerfile ${{ inputs.Dockerfile }} --destination ${{ inputs.image }} --context dir://${{ inputs.context }}     

Then, you can use it directly like:

name: Build and Deploy Docker Image

on:
  push:
    branches:
      - main
  workflow_dispatch:

jobs:
  build:
    runs-on: docker

    steps:
    # Checkout the repository
    - name: Checkout code
      uses: actions/checkout@v3

    - name: Get current date # This is just how I label my containers, do whatever you prefer
      id: date
      run: echo "::set-output name=date::$(date '+%Y%m%d-%H%M')"

    - uses:  path.to.your.forgejo.instance:port/infrastructure/action-koniko-build@main # This is what I said above, it references your infrastructure action, on the main branch
      with:
        Dockerfile: cluster/charts/auth/operator/Dockerfile
        image: path.to.your.forgejo.instance:port/group/repo:${{ steps.date.outputs.date }}
        registry: path.to.your.forgejo.instance:port/v1
        username: ${{ env.GITHUB_ACTOR }}
        password: ${{ secrets.RUNNER_TOKEN }} # I haven't found a good secret option that works well, I should see if they have fixed the built-in token
        context: ${{ env.GITHUB_WORKSPACE }}

I run my runners in Kubernetes in the same cluster as my forgejo instance, so this all hooks up pretty easy. Lmk if you want to see that at all if it's relevant. The big thing is that you'll need to have them be Privileged, and there's some complicated stuff where you need to run both the runner and the "dind" container together.

[–] felbane@lemmy.world 1 points 2 days ago (1 children)

Thanks for the write-up! I've been trying and failing to do DOOD and POOP runners via forgejo, but I haven't had the time or energy to really dig in and figure out the issue. At this point I just want something to work so I'll give your setup a try 😎

Of course! Let me know how you run your containers and I may be able to help on that side too

load more comments (5 replies)
[–] thesmokingman@programming.dev 14 points 2 days ago

Please don’t take me as a GH shill because I’m not. I’m not sure we read the same email given your projects. Actions on GH runners are dropping in cost and there’s a new fractional cost for self-hosted. For the average user, especially those on GH runners, costs are going down. Looking at your repo, you haven’t run anything since July. Your workflow files use GH runners. Nothing in your history suggests you’re leaving the free tier so I don’t get this FUD at all. General Microsoft hate? Fuck yeah. Shitty GH service? Fuck yeah. Plenty of reasons to dunk but this was not one of them. M

[–] trougnouf@lemmy.world 8 points 2 days ago (1 children)

Self-hosted Forgejo Actions on a Codeberg repository. It was relatively easy to setup and I don't even need a VPS through my dynamic IP 5G connexion. See also: https://codeberg.org/trougnouf/cfait

[–] victorz@lemmy.world 4 points 2 days ago

connexion

I'm imagining you saying "connex-yun", and it reminds me of Stewie saying "cool-hhhwip".

[–] Routhinator@startrek.website 12 points 2 days ago

Forgejo and self hosted action workers.

[–] possiblylinux127@lemmy.zip 4 points 2 days ago

Woodpecker CI

[–] fruitycoder@sh.itjust.works 6 points 2 days ago

Git lab CI is my goto for git repo based things (unit tests, integration tests, etc). Fleet through Rancher for real deployments (manages and maintains state because kubernetes). Tekton is my in between catchall.

[–] Carol2852@discuss.tchncs.de 14 points 3 days ago (5 children)

I'm using gitea which has CI compatible to GitHub actions with my own runner. It's pretty straightforward to set up and didn't give me any headaches yet. It's a very small instance just for my ownaybe dozen projects though.

[–] yaroto98@lemmy.world 6 points 3 days ago (10 children)

This is what I was using till I switched to forgejo and never got around to setting up one of their runners.

[–] Carol2852@discuss.tchncs.de 2 points 2 days ago

I run their act binary on one of my servers. Can't remember much of the setup, so I can't be too bad. I did have to change the used images though, but I guess that comes with maintenance of you own runner anyway.

load more comments (9 replies)
load more comments (4 replies)
[–] _stranger_@lemmy.world 9 points 2 days ago (1 children)

Magnetic needle. Steady hand.

[–] TechieDamien@lemmy.ml 6 points 2 days ago

Not butterflies?

[–] elephantium@lemmy.world 5 points 2 days ago (2 children)

We use Azure Devops at my current gig. It works pretty well for our setup. I've used GHA before; it definitely didn't "spark joy". I ~~wasted~~spent way too many hours in the "update yaml file, commit, push, wait 5 minutes for it to fail again" ~~spiral of despair~~feedback loop.

Nice thing with ADO is its release dashboard -- you get a really nice summary of recent builds and where they went:

$project - dev - test - prod

I didn't see anything similar for GHA.

load more comments (2 replies)
[–] EarMaster@lemmy.world 9 points 2 days ago

Gitlab CI/CD pipelines are my go-to tool. At work we self host an instance, for personal projects I use gitlab.com.

[–] irmadlad@lemmy.world 10 points 3 days ago (2 children)

Watching this thread because CI/CD is something that I'd like to get into.

[–] elephantium@lemmy.world 2 points 2 days ago (1 children)
[–] irmadlad@lemmy.world 3 points 2 days ago

I..uh....I pretend I am from time to time.

load more comments (1 replies)
[–] cosmicrose@lemmy.blahaj.zone 8 points 2 days ago

I self-host https://woodpecker-ci.org/ and I love it. It was easy to set up, and I never have to worry about CI/CD minutes.

[–] avidamoeba@lemmy.ca 8 points 2 days ago* (last edited 2 days ago) (2 children)
[–] prettybunnys@piefed.social 8 points 2 days ago (3 children)

Jenkins is good enough to be widely used enough to be hated enough to be downvoted.

The sign of a mature product IMO.

You could do worse than Jenkins

[–] avidamoeba@lemmy.ca 5 points 2 days ago (1 children)

Been using Jenkins since before it was called Jenkins. It's been in use at every corpo I've worked for. It can practically do anything. Especially coupled with Docker.

[–] elephantium@lemmy.world 4 points 2 days ago

Hudson? Man, that's a blast from the past.

[–] PushButton@lemmy.world 1 points 2 days ago (1 children)

I was scrolling, looking for a Jenkins somewhere, to finally find that post with down votes.

Every company I go, it's a different CICD, and they all make me wish to use Jenkins instead.

[–] prettybunnys@piefed.social 1 points 2 days ago

Jenkins is better than many but IMO Gitlab pipelines are top tier.

load more comments (1 replies)
[–] AA5B@lemmy.world 3 points 2 days ago* (last edited 2 days ago)

I’m not entirely sure why all the hate : Jenkins can do the most things the must ways. And yes, it’s so much nicer defining a pipeline with a fully functional language than an assortment of yaml files

Actually that was my response when my company wanted to start using Gitlab ci. It only has one way of doing things so you can probably get a faster start if you had no ci, were a small company, and had simple builds. However we’re over 4,000 builds in many languages from 12 year old monoliths to modern micro services and containers….. and way too much godawful JavaScript. Do you want the quick and simple tool great for a small startup or the all powerful kitchen sink of tools?

[–] weastie@lemmy.world 4 points 2 days ago (1 children)

I do devops at work and my experience is that really any CI/CD system works, they all have enough features to do what you want. They all fundamentally just run scripts on boxes. Therefore, I say pick the easiest one, likely the one that is built into whatever Git system you are using.

Try to keep your pipelines simple-ish when you can, they almost never need to be that complicated. 95% of the time it's just running a command or two. If a pipeline needs to do something complex, I'd recommend writing that script into the Git repo and calling it, rather than having a CI job that is 100 lines long.

load more comments (1 replies)
[–] verstra@programming.dev 3 points 2 days ago

I'm currently looking into Concourse.

It does have steeper-than-average learning curve, but I really like that it has well-defined fundamentals (resources, jobs, tasks) and isolation with OCI containers. Before I adopt it fully, I want it to run my nix flake dev shell.

[–] douglasg14b@lemmy.world 2 points 2 days ago

GitHub Actions mostly.

The rest is usually plumbing and code to support it. The actions are just the automated execution environment.

[–] killabeezio@lemmy.zip 3 points 2 days ago* (last edited 2 days ago) (2 children)

So many these days. Actions are probably one of the best, but there are still plenty of others out there.

  • gitlab
  • dagger
  • concourseci
  • tekton
  • Spinnaker
  • harness
  • argo
  • flux
  • gocd

If I were to pick one, it would probably be dagger. Or really anything but Jenkins.

[–] partofthevoice@lemmy.zip 2 points 2 days ago

Gitea Actions, as well.

load more comments (1 replies)
[–] eager_eagle@lemmy.world 4 points 3 days ago (2 children)

fwiw, you can self host a GitHub actions runner

[–] Natanox@discuss.tchncs.de 4 points 3 days ago (2 children)

Don't they want to monetize those as well?

[–] chrash0@lemmy.world 8 points 3 days ago

yes, according to this morning’s email

load more comments (1 replies)
load more comments (1 replies)
load more comments
view more: next ›