Chuyên mục
Self Hosting

Cosmos-Server – Công cụ quản lý homelab đa tính năng, siêu tiện lợi

Trước giờ, quy trình cài đặt và quản lý các ứng dụng self-host trong homelab ở nhà của mình thường diễn ra như sau:

  1. Tạo máy ảo VM hoặc container LXC mới trên Proxmox, cài đặt thêm Docker và Docker Compose.
  2. Cài đặt ứng dụng bằng Docker-Compose, hoặc Portainer.
  3. Tạo Reverse Proxy với Nginx Proxy Manager để có thể truy cập ứng dụng thông qua tên miền.
  4. Thêm ứng dụng vào Dashboard của Homepage để tiện việc truy cập khi cần.

Mình đã thao tác quen tay nên tất cả các bước này thường chỉ mất tối đa 10 phút. Nhưng với những bạn mới bắt đầu tìm hiểu về Docker / Self-Host, đây rõ ràng là một thách thức khi có quá nhiều khái niệm và ứng dụng phải nghiên cứu làm quen.

Để giúp tinh gọn việc cài đặt và quản lý homelab, gần đây mình đang dần chuyển qua sử dụng Cosmos-Server, một công cụ miễn phí cực kỳ mạnh mẽ dành cho các homelabber. Quan trọng hơn là nó rất dễ sử dụng, dễ quản lý, phù hợp cho các bạn mới bắt đầu hay đã có kinh nghiệm.

Bài viết này sẽ hướng dẫn bạn cách cài đặt và sử dụng Cosmos-Server.

I. Giới thiệu Cosmos-Server

Cosmos-Server là một nền tảng quản lý ứng dụng all-in-one (tất cả trong một dành) được tối ưu để cài đặt trên server cá nhân. Nó bao gồm các tính năng sau:

  • Reverse Proxy (tương tự như Nginx Proxy Manager hay Traefik), tích hợp sẵn công cụ xác thực chứng chỉ SSL Let’s Encrypt.
  • Docker Container Manager (tương tự Portainer) để quản lý Docker container, image, volume, network.
  • App Store: (tương tự Portainer, CasaOS, Yunohost) tích hợp sẵn kho ứng dụng có thể cài đặt chỉ với vài cú click chuột.
  • SmartShield technology: Tích hợp sẵn các công cụ bảo mật để chống DDOS, hỗ trợ xác thực 2FA
  • Authentication Server: tính năng xác thực danh tính để tối ưu bảo mật
  • Dashboard: (tương tự Homepage, Dashy) để tạo trang chủ cá nhân.
  • VPN: giúp truy cập ứng dụng từ bên ngoài mà không cần phải mở port trên router.

Tóm lại, Cosmos-Server không chỉ thay thế hoàn toàn các ứng dụng mình đang sử dụng: Portainer, Nginx Proxy Manager, Homepage, mà còn giúp việc quản lý trở nên tiện lợi hơn hẳn khi tất cả thao tác đều có thể thực hiện trong cùng 1 giao diện.

II. Cài cặt Cosmos-Server

SSH vào server, cài đặt Docker bằng lệnh

curl -fsSL https://get.docker.com | sudo shCode language: Nginx (nginx)

Tạo thư mục mới trên server và tạo file docker-compose.yml

mkdir ~/cosmos-server
cd ~/cosmos-server
nano docker-compose.ymlCode language: Bash (bash)

Nhập vào đoạn mã sau và lưu lại.

version: '3.3'
services:
    cosmos-server:
        ports:
            - '80:80'
            - '443:443'
            - '4242:4242/udp'
        container_name: cosmos-server
        hostname: cosmos-server
        restart: always
        privileged: true # Required for SELinux
        volumes:
            - '/var/run/docker.sock:/var/run/docker.sock'
            - './config:/config'
            - '/:/mnt/host'
        image: 'azukaar/cosmos-server:latest'Code language: YAML (yaml)

Kích hoạt Cosmos-Server

docker compose up -dCode language: Nginx (nginx)

Tiếp theo, mở trình duyệt, truy cập vào địa chỉ IP của server để bắt đầu quá trình thiết lập. Ví dụ: http://192.168.0.50.

Bấm Next để tiếp tục

Bấm Connect để tạo database

Sau khi Database được kích hoạt, bấm Next

Nhập vào domain bạn muốn sử dụng để truy cập Cosmos-Server, chọn Use Let’s Encrypt automatic HTTPS, Email, và bấm Update để tạo chứng chỉ SSL. Ví dụ: cosmos-server.thuanbui.me

Lưu ý: domain cần phải được chỉnh DNS trỏ về IP của server đang cài đặt Cosmos-Server.

Nhập thông tin tài khoản admin và bấm Create.

Bấm Apply and Restart để hoàn thành quá trình thiết lập Cosmos-Server

III. Cài đặt ứng dụng trên Cosmos Server

Truy cập vào Comos-Server sử dụng tên miền bạn đã cấu hình ở bước trên. Đăng nhập bằng thông tin tài khoản admin đã chọn.

Sau khi đăng nhập, Cosmos sẽ hiện ra trang Home trắng trơn vì lúc này chưa có ứng dụng nào được cài đặt.

Chọn mục Market ở menu bên tay trái để xem danh sách các ứng dụng có sẵn. Bạn cũng có thể cài đặt ứng dụng bất kỳ bằng cách bấm vào nút Import Compose File và nhập nội dung file docker-compose.yml vào đó.

Mình chọn ứng dụng Code-Server, bấm nút Install để bắt đầu cài đặt.

Nhập thêm 1 số thông tin liên quan: path, URL, và bấm Next

Bấm nút Create để Cosmos bắt đầu tải Docker image và cài đặt ứng dụng

Sau khi cài đặt xong, hệ thống sẽ hiện ra thông báo: server không sử dụng chứng chỉ wildcard certificate nên sau khi cài đặt ứng dụng mới, server sẽ phải khởi động lại để xác thực chứng chỉ SSL cho tên miền mới. Bấm OK là xong.

Ứng dụng sau khi cài đặt sẽ hiện ra ở trang Home để bạn có thể dễ dàng truy cập khi cần.

IV. Cấu hình Wildcard SSL

Để tối ưu việc cài đặt ứng dụng và xác thực chứng chỉ SSL, mình sẽ cấu hình sử dụng Wildcard SSL cho hệ thống. Chỉ cần 1 chứng chỉ SSL duy nhất cho tên miền cosmos-server.thuanbui.me sẽ sử dụng được cho tất cả các tên miền con như vscode.cosmos-server.thuanbui.me hay plex.cosmos-server.thuanbui.me.

1. Trỏ DNS về IP của server

Sử dụng Cloudflare DNS, tạo chỉ mục DNS mới cho tên miền *.cosmos-server.thuanbui.me và trỏ về IP của Server đang cài đặt Cosmos-Server.

2. Thiết lập Cloudflare API Token

Tạo API Tokens mới:

  • Permision: Edit DNS và Read Zone
  • Zone Resources: chọn tên miền bạn muốn sử dụng

Sau khi tạo xong, copy API Tokens để chuẩn bị paste vào mục cấu hình trên Cosmos-Server

3. Cấu hình DNS Challenge

Quay lại Cosmos-Server, truy cập vào mục Configuration, tìm đến phần Encryption và nhập vào các thông tin cần thiết:

  • Bấm chọn vào mục Use Wildcard Certificate for the root domain of …
  • Mục (optional, only…) nhập vào *.cosmos-server.thuanbui.mecosmos-server.thuanbui.me
  • Pick a DNS provider: chọn cloudflare, sau đó nhập Token API đã tạo ở trên vào mục CF_DNS_API_TOKEN.

Bấm Save để lưu lại. Hệ thống sẽ khởi động lại sau 1-2 phút.

V. Các tính năng khác

Cosmos-Server còn nhiều tính năng mạnh mẽ khác mà mình chưa có thời gian mò đến

  • Tạo Reverse Proxy: truy cập vào mục URLS để xem các tên miền đã được cấu hình. Bạn có thể bấm vào nút Create để tạo Reverse Proxy mới.
  • Quản lý Docker: truy cập vào mục ServApps để xem các container đang hoạt động. Bạn có thể tạm ngừng, khởi động lại, xem logs, truy cập vào Terminal,… của container ở đây.
  • Quản lý User: truy cập mục User để tạo thêm người sử dụng cho Cosmos-Server
  • VPN: truy cập mục Constellation để tạo VPN

Chúc bạn cài đặt thành công và tận hưởng thời gian khám phá Cosmos-Server.

Nếu bài viết của mình mang đến thông tin, kiến thức hữu ích cho bạn, đừng ngại mời mình ly bia để có thêm động lực chia sẻ nhiều hơn nữa. Cám ơn bạn!

Lưu ý: Nếu bạn cần hỗ trợ kỹ thuật, vui lòng gửi câu hỏi trực tiếp ở phần Thảo luận bên dưới, mình sẽ trả lời sớm. Đừng mò vào hỏi trong fanpage Yêu Chạy Bộ, sẽ không có phản hồi đâu!

Bởi Thuận Bùi

Runner at Yêu Chạy Bộ. Blogger at Ba Lô & Dép Lào. Web Developer at TB's Blog.
Follow me: Facebook / Instagram

21 trả lời trong “Cosmos-Server – Công cụ quản lý homelab đa tính năng, siêu tiện lợi”

Em làm xong tất cả rồi, mà tới bước cuối cùng, sau khi restart thì nó cứ báo là “Your connection isn’t private”. Hình như có vấn đề gì đó ở chỗ chứng chỉ SSL nhưng em không biết phải sử lý sao cả 🙁

Anh cho e hỏi chút. Em cài WordPress từ cosmos-server. Em không thể upload theme quá 2mb. Em lên discog của dự án để hỏi thì họ kêu thêm evn UPLOAD_LIMIT = 64M. Em đã thử nhưng không được. Thử thêm mấy evn tương tự cũng không. Anh giúp em với 😀

Em cần tạo 1 file wordpress.ini trên server, lưu trong /home trong đó ghi nội dung upload_max_filesize = 64M. Sau đó lúc cài WordPress cần truy cập vào phần mount point, tạo thêm mount point mới như sau: Type: chọn Bind; Soure: /home/wordpress.ini; Target: /usr/local/etc/php/conf.d/wordpress.ini, như hình này: https://tinyurl.com/yqpqdkpq
Rồi bấm Create để tạo, lúc này limit sẽ được tăng lên 64M: https://tinyurl.com/ykgh3wlk

Xem thêm ở đây: https://stackoverflow.com/questions/58813424/docker-wordpress-container-with-custom-php-ini-file-settings

Anh ơi em làm bị lỗi như này không biết là do vấn đề gì ạ: “failed to deploy a stack: cosmos-server Pulling cosmos-server Error Error response from daemon: Get “https://registry-1.docker.io/v2/”: dial tcp: lookup registry-1.docker.io on 192.168.1.1:53: read udp 192.168.1.113:42664->192.168.1.1:53: read: connection refused”, mong anh giúp đỡ!

Mình setup tới bước cuối ấn save xong truy cập lại dính lỗi “redirected you too many times” không thể truy cập lại được Cosmos. Có phải ở Cloudflare mình setup 2 DNS:
*.cosmos.naai.studio
cosmos.naai.studio

Mình gần đây có setup lại cái này trên PC thì okay hết. Mỗi tội các service giao tiếp với nhau kiểu gì thì chưa kiểm soát được. Ví dụ prowlarr cần kết nối với radarr nhưng mình thử bằng domain https hay để localhost đều k kết nối được. Kể cả gõ IP nội bộ của PC vào vẫn k nhận. Mình cần vào docker potainer và join vào vào 1 network chung hay sao nhỉ?

Thêm một vấn đề nữa là mỗi lần tắt máy mở lại khởi động docker xong nó bắt setup cosmos lại từ đầu luôn. Làm sao để ngưng tình trạng này nhỉ? Mình cài lên PC

Docker nào cũng cài trên PC mà bạn. Chắc ý bạn là cài trên Windows?
Mình luôn chạy Docker trên Ubuntu, và cái Cosmos này chưa bao giờ bị lỗi như thế. Khởi động máy lại luôn tự động chạy lại như cũ.

Mình không có VPS đủ mạnh để cài cái này nên thử trước trên PC ở nhà. Mà PC chạy window nên có vấn đề phát sinh nhiều chăng. Thấy sau khi cài xong nó hiện thông báo Your Cosmos server is not running in the docker host network mode. It is recommended that you migrate your install. Nhưng mình để networkmode host thì hết truy cập đc vào bằng domain hay bằng localhost.

Mình muốn cài cosmos-server này lên con router PC chạy routeros Mikrotik. Nhưng mà bị lỗi Cannot connect to the Docker daemon at unix:///var/run/docker.sock

Cái này là do mình cấu hình sai. Hay là không thể cài được nó trên routeros nhỉ?

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *