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
Gitea và Forgejo 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.
Bình luận (0)
Chưa có bình luận. Hãy là người đầu tiên!