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.
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.
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.
– 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.