Bộ app self-hosted biến homelab dev thành xưởng phần mềm xịn

30/05/2026 · P T P · Chung

Bộ app self-hosted cho dev tại nhà: Git, CI/CD, registry, docs, database admin

Một homelab nhỏ không chỉ để “nghịch server”. Với dev, nó có thể thành xưởng phát triển cá nhân: lưu code, chạy CI/CD, build image, host package, viết tài liệu, quản trị DB, test app nội bộ. Không phụ thuộc hoàn toàn GitHub/GitLab cloud. Không lo quota. Không bị khóa workflow khi mạng chập chờn. Quan trọng hơn: bạn hiểu sâu hơn về hạ tầng thật.

Self-hosted không nhất thiết phức tạp. Một mini PC, NAS, VPS nhỏ, hoặc máy cũ RAM 16GB đã đủ. Cốt lõi: chọn đúng app, ghép vừa nhu cầu, backup tử tế, bảo mật cơ bản.

Bài này đề xuất một bộ app thực tế cho dev tại nhà: Git, CI/CD, registry, docs, database admin.


Kiến trúc tổng quan nên có

Một stack gọn:

Reverse proxy: Caddy / Traefik / Nginx Proxy Manager
SSO/auth: Authelia / Authentik / Keycloak
Git server: Gitea / Forgejo / GitLab CE
CI/CD runner: Woodpecker CI / Drone / GitLab Runner / Gitea Actions
Container registry: Harbor / Docker Registry / Gitea Packages
Docs/wiki: BookStack / Wiki.js / MkDocs Material
DB admin: Adminer / pgAdmin / CloudBeaver
Monitoring/logs: Uptime Kuma / Grafana / Loki
Backup: Restic / BorgBackup / Kopia

Tối giản hơn:

– Forgejo + Actions
– Gitea Packages
– BookStack
– Adminer
– Caddy
– Restic

Ít app hơn → ít bảo trì hơn.


Git self-hosted: Gitea, Forgejo, GitLab CE

Gitea / Forgejo: nhẹ, đủ, dễ sống

GiteaForgejo là lựa chọn hợp lý nhất cho homelab. Chạy nhẹ, UI quen, hỗ trợ repo, issue, PR, wiki, release, package registry. Forgejo là fork cộng đồng của Gitea, thiên về tự do, minh bạch.

Phù hợp nếu bạn cần:

– Repo riêng tư
– Review code
– Issue tracking
– SSH Git
– Webhook
– Package registry
– CI tích hợp qua Actions hoặc Woodpecker

Ưu điểm:

– RAM thấp
– Cài bằng Docker dễ
– Backup đơn giản
– Không nặng như GitLab

Nhược điểm:

– Ecosystem nhỏ hơn GitHub/GitLab
– Một số tính năng enterprise không có

GitLab CE: mạnh nhưng nặng

GitLab CE rất đầy đủ: Git, issue, CI/CD, registry, wiki, security scan. Nhưng với máy tại nhà, nó hơi “ăn tài nguyên”.

Nên dùng nếu:

– Bạn muốn all-in-one
– RAM từ 8–16GB riêng cho GitLab
– Chấp nhận upgrade, backup, config phức tạp hơn

Không nên dùng nếu:

– Server yếu
– Chỉ cần repo + CI cơ bản
– Muốn ít bảo trì

Khuyến nghị thực tế: Forgejo/Gitea cho homelab. GitLab CE chỉ khi thật sự cần.


CI/CD tại nhà: build, test, deploy nội bộ

CI/CD self-hosted giúp bạn tự động hóa:

– Chạy test khi push code
– Build Docker image
– Push image vào registry riêng
– Deploy lên server nội bộ
– Chạy cron job kỹ thuật
– Test nhiều phiên bản runtime

Gitea Actions / Forgejo Actions

Nếu dùng Gitea/Forgejo, Actions là lựa chọn tiện. Cú pháp gần GitHub Actions. Runner chạy riêng bằng Docker.

Ví dụ pipeline:

name: build
on:
  push:
    branches: [main]

jobs: docker: runs-on: docker steps: - uses: actions/checkout@v4 - run: docker build -t registry.home.local/app:latest . - run: docker push registry.home.local/app:latest

Ưu điểm:

– Tích hợp Git trực tiếp
– Dễ migrate từ GitHub Actions
– Ít app phụ

Lưu ý:

– Runner có quyền cao nếu mount Docker socket
– Không chạy job lạ từ repo không tin cậy
– Tách runner cho project quan trọng

Woodpecker CI

Woodpecker nhẹ, đẹp, dễ dùng. Kết nối Gitea/Forgejo tốt. Pipeline YAML đơn giản.

Phù hợp khi bạn thích CI riêng, rõ ràng, không phụ thuộc Actions.

Ưu điểm:

– Nhẹ
– Container-native
– Plugin phong phú
– Tách biệt Git server

Nhược điểm:

– Cần thêm app
– Cấu hình webhook/token ban đầu

GitLab Runner

Nếu dùng GitLab CE, Runner là lựa chọn mặc định. Rất mạnh. Nhưng nếu chỉ dùng homelab nhỏ, hơi dư.


Registry: lưu Docker image, package nội bộ

Registry là nơi chứa artifact: Docker image, npm package, Python wheel, Go module, Helm chart.

Gitea Packages

Nếu dùng Gitea/Forgejo, package registry tích hợp là đủ cho nhiều nhu cầu:

– Docker/OCI image
– npm
– PyPI
– Maven
– NuGet
– generic package

Ưu điểm:

– Không cần app riêng
– Gắn package với user/org/repo
– Auth đồng bộ

Nhược điểm:

– Không mạnh bằng Harbor
– UI/quota/security scan hạn chế hơn

Docker Registry thuần

Image registry tối giản:

services:
  registry:
    image: registry:2
    ports:
      - "5000:5000"
    volumes:
      - ./data:/var/lib/registry

Ưu điểm:

– Rất nhẹ
– Dễ chạy
– Chuẩn Docker

Nhược điểm:

– Không có UI mặc định
– Auth/TLS phải tự cấu hình
– Cleanup phức tạp hơn

Harbor

Harbor là registry chuyên nghiệp:

– UI tốt
– Project/quota
– RBAC
– Vulnerability scan
– Image signing
– Replication

Phù hợp nếu bạn có nhiều image, nhiều user, cần policy rõ.

Nhược điểm: nặng hơn, nhiều service, backup cần kỹ.

Khuyến nghị:

– Solo dev → Gitea Packages
– Team nhỏ/học DevOps → Harbor
– Tối giản tuyệt đối → Docker Registry


Docs: tài liệu sống, không để trong đầu

Dev homelab rất dễ rơi vào cảnh: “Mình setup cái này kiểu gì nhỉ?”. Vì vậy docs là app bắt buộc.

BookStack

BookStack phù hợp cho tài liệu dạng sách:

– Shelf → Book → Chapter → Page
– UI thân thiện
– Editor dễ dùng
– Phân quyền tốt
– Tìm kiếm ổn

Dùng để ghi:

– Hướng dẫn deploy
– Sơ đồ hạ tầng
– Credential policy
– Runbook sự cố
– Ghi chú project
– Checklist backup/restore

Wiki.js

Wiki.js hiện đại, hỗ trợ Markdown tốt, nhiều backend auth, giao diện đẹp.

Phù hợp nếu bạn thích wiki kiểu developer hơn.

MkDocs Material

Nếu muốn docs-as-code, chọn MkDocs Material:

– Viết Markdown trong Git
– Review bằng PR
– CI build static site
– Deploy bằng Caddy/Nginx

Phù hợp cho tài liệu kỹ thuật versioned: API docs, architecture decision records, onboarding.

Mô hình tốt:

– BookStack → vận hành/homelab/runbook
– MkDocs → docs theo repo/project


Database admin: xem, sửa, debug DB an toàn

Database admin tool giúp kiểm tra dữ liệu nhanh, chạy query, debug migration, export/import.

Adminer

Adminer là lựa chọn siêu nhẹ. Một file PHP, hỗ trợ nhiều DB:

– PostgreSQL
– MySQL/MariaDB
– SQLite
– MS SQL
– Mongo qua plugin

Ưu điểm:

– Cực nhẹ
– Cài nhanh
– Đủ dùng khi cần vào DB

Nhược điểm:

– UI đơn giản
– Không nhiều tính năng nâng cao
– Cần bảo vệ bằng auth/proxy

pgAdmin

Nếu dùng PostgreSQL nhiều, pgAdmin mạnh hơn:

– Query tool
– Schema browser
– Backup/restore
– Explain plan
– User/role management

Nhược điểm: nặng hơn, UI đôi lúc chậm.

CloudBeaver

CloudBeaver là bản web của DBeaver:

– Hỗ trợ nhiều DB
– UI hiện đại
– Team-friendly
– Quản lý connection tốt

Phù hợp nếu bạn có nhiều loại DB trong homelab.

Khuyến nghị:

– Nhanh/gọn → Adminer
– PostgreSQL-heavy → pgAdmin
– Multi-DB nghiêm túc → CloudBeaver


Reverse proxy, HTTPS, domain nội bộ

Không nên truy cập app qua port lẻ như :3000, :8080, :5000 mãi. Dùng reverse proxy:

git.home.local
ci.home.local
registry.home.local
docs.home.local
db.home.local

Caddy

Caddy dễ nhất. HTTPS tự động nếu dùng domain public. Nội bộ có thể dùng internal CA.

Ưu điểm:

– Config ngắn
– Auto TLS
– Reverse proxy dễ
– HTTP/3 sẵn

Traefik

Traefik hợp với Docker/Kubernetes. Tự discover service qua label.

Ưu điểm:

– Dynamic config
– Dashboard
– Middleware
– Let’s Encrypt tốt

Nhược điểm: khó hơn Caddy chút.

Nginx Proxy Manager

Có UI. Hợp người không muốn viết config.


Auth và bảo mật: đừng để homelab thành cửa hậu

Self-hosted nghĩa là bạn chịu trách nhiệm bảo mật.

Checklist tối thiểu:

– Bật 2FA cho Git/docs/admin
– Không expose DB admin ra internet
– Dùng VPN: WireGuard / Tailscale / Headscale
– Reverse proxy + HTTPS
– Mật khẩu mạnh, dùng password manager
– Tách user admin/user thường
– Update định kỳ
– Backup trước khi upgrade
– Không mount Docker socket vào runner nếu không cần
– Không chạy CI cho code không tin cậy

Nếu cần SSO:

Authentik: đẹp, mạnh, hợp homelab
Authelia: nhẹ, reverse-proxy auth tốt
Keycloak: chuẩn enterprise, nặng hơn

Cách an toàn: chỉ public Git/docs cần thiết; CI, registry, DB admin để sau VPN.


Backup: phần quan trọng nhất

Không backup → không self-hosted nghiêm túc.

Cần backup:

– Git repositories
– DB của Gitea/Forgejo/GitLab
– Package registry storage
– Docs database/files
– CI config/secrets
– Reverse proxy config
.env, compose files

Tool nên dùng:

Restic: đơn giản, mã hóa, nhiều backend
BorgBackup: mạnh, dedup tốt
Kopia: UI ổn, dễ quản lý

Quy tắc 3-2-1:

– 3 bản sao
– 2 loại lưu trữ
– 1 bản ngoài máy chính

Quan trọng hơn: test restore. Backup chưa restore thử chỉ là niềm tin.


Stack đề xuất theo mức độ

Tối giản cho solo dev

– Caddy
– Forgejo
– Forgejo Actions runner
– Gitea/Forgejo Packages
– BookStack
– Adminer
– Uptime Kuma
– Restic

Ưu điểm: nhẹ, dễ hiểu, đủ 90% nhu cầu.

Nâng cao cho team nhỏ

– Traefik
– Authentik
– Forgejo
– Woodpecker CI
– Harbor
– Wiki.js hoặc BookStack
– CloudBeaver
– Grafana + Loki
– Kopia/Restic

Ưu điểm: rõ vai trò, gần môi trường production.

All-in-one kiểu enterprise

– GitLab CE
– GitLab Runner
– GitLab Registry
– GitLab Wiki
– pgAdmin/CloudBeaver
– Caddy/Traefik
– Restic

Ưu điểm: đồng bộ. Nhược: nặng, upgrade cần cẩn thận.


Kết luận: bắt đầu nhỏ, vận hành thật

Bộ app self-hosted lý tưởng không phải bộ nhiều logo nhất. Đó là bộ bạn hiểu, backup được, restore được, cập nhật được.

Nếu mới bắt đầu, chọn đường gọn: Forgejo + Actions + Packages + BookStack + Adminer + Caddy + Restic. Sau đó thêm Harbor, Authentik, monitoring khi nhu cầu thật xuất hiện.

Self-hosted cho dev tại nhà không chỉ tiết kiệm hay riêng tư hơn. Nó biến bạn thành người hiểu toàn bộ vòng đời phần mềm: code → build → test → package → deploy → document → operate → recover. Đây là kỹ năng rất khó học nếu chỉ bấm nút trên dịch vụ cloud.

#bien #homelab #hosted #self #thanh
Chia sẻ:
← Trước
Dashboard Homelab Đẹp Tiện: Quản Lý Mọi Dịch Vụ Một Nơi

Bài viết tương tự

Bình luận

Chưa có bình luận. Hãy là người đầu tiên!