Gitea là dịch vụ Git tự lưu trữ miễn phí và mã nguồn mở giống như GitHub, BitBuacket và GitLab. Đây là nhánh cộng đồng của dịch vụ git Gogs, được viết bằng Go với Giấy phép MIT. Gitea cung cấp các tính năng cho phát triển cộng tác và nhóm như theo dõi lỗi, wiki và đánh giá mã. Gita là ứng dụng đa nền tảng, có thể cài đặt trên nhiều hệ điều hành như Linux, macOS, Windows và ARM.
Mục tiêu chính của Gitea là cung cấp cách dễ nhất, nhanh nhất và đơn giản nhất để tạo và triển khai dịch vụ Git trên máy chủ của bạn. Ngoài ra, Gitea hỗ trợ nhiều phương thức xác thực như LDAP, PAM, SMTP và FreeIPA. Đối với các sự kiện kho lưu trữ webhook, Gitea hỗ trợ nhiều webhook như Slack, Discord, Microsoft Team, Telegram, v.v.
Trong hướng dẫn này, bạn sẽ tìm hiểu cách cài đặt và cấu hình máy chủ Git tự lưu trữ có tên Gitea với Docker trên máy chủ Ubuntu 22.04 mới nhất. Bài viết này cũng hướng dẫn cài đặt và cấu hình máy chủ web Nginx như một proxy ngược cho dịch vụ container Gitea.
Trước khi bắt đầu, hãy chạy lệnh apt bên dưới để cài đặt các gói phụ thuộc cơ bản như gnupg2 và curl.
Sau khi cài đặt hoàn tất, hãy chạy lệnh bên dưới để tải xuống và thêm khóa GPG vào kho lưu trữ Docker. Khóa GPG sẽ được lưu trữ trong thư mục /etc/apt/keyrings.
Tiếp theo, thêm kho lưu trữ Docker bằng lệnh sau.
Sau đó, hãy cập nhật và làm mới kho lưu trữ Ubuntu của bạn bằng lệnh bên dưới.
Trong ảnh chụp màn hình bên dưới, bạn có thể thấy kho lưu trữ Docker cho Ubuntu 22.04 đã được thêm vào.
Cuối cùng, bạn có thể cài đặt công cụ Docker vào hệ thống Ubuntu của mình bằng lệnh sau. Gói docker-compose plugin là sự thay thế cho Docker Compose, hiện có thể được sử dụng làm plugin cho Docker.
Nhập Y để xác nhận cài đặt và nhấn ENTER để tiếp tục. Quá trình cài đặt Docker sẽ bắt đầu.
Bây giờ hãy chạy lệnh docker bên dưới để xác minh quá trình cài đặt Docker của bạn.
Nếu quá trình cài đặt Docker của bạn thành công, bạn sẽ thấy thông báo Hello World từ Docker.
Chạy lệnh bên dưới để thêm một người dùng mới có tên là gitea. Tùy chọn -m ở đây được sử dụng để tự động tạo thư mục home mới cho người dùng 'gitea' và shell mặc định cho người dùng mới là /bin/bash.
Tiếp theo, thêm người dùng 'gitea' vào nhóm 'docker' bằng lệnh sau. Và bây giờ người dùng 'gitea' sẽ có thể chạy các container Docker.
Để xác minh, hãy đăng nhập với tư cách là người dùng 'gitea' bằng lệnh sau.
Bây giờ hãy chạy lệnh docker bên dưới để khởi động một container mới với hình ảnh "hello-world".
Bạn sẽ thấy thông báo Hello-world từ Docker, điều này có nghĩa là bạn đã sẵn sàng bắt đầu cấu hình một dự án mới để cài đặt Gitea.
Trước tiên, hãy tạo một thư mục dự án mới có tên "myapp" và thay đổi thư mục làm việc thành thư mục đó.
Tạo tệp docker-compose.yml mới bằng trình soạn thảo nano.
Thêm cấu hình sau vào tệp docker-compose.yml.
Lưu và đóng tệp khi bạn hoàn tất.
Với các cấu hình này, bạn sẽ tạo các tài nguyên sau:
Dưới đây, bạn có thể thấy quá trình tải xuống các hình ảnh Docker cần thiết cho Gitea.
Khi tất cả quá trình hoàn tất, bạn sẽ thấy đầu ra giống như ảnh chụp màn hình sau.
Bây giờ hãy chạy lệnh docker bên dưới để kiểm tra các dịch vụ container Gitea.
Trong ảnh chụp màn hình sau, bạn có thể thấy dịch vụ có tên "server" và "db" đang chạy, điều này có nghĩa là quá trình triển khai dịch vụ container Gitea đã hoàn tất và thành công.
Dịch vụ Gitea đang chạy trên máy chủ cục bộ với cổng 3000. Và cổng 2222 có thể được sử dụng cho các kết nối SSH.
nếu bạn gặp lỗi trong quá trình cài đặt, bạn luôn kiểm tra nhật ký của các dịch vụ container bằng các lệnh bên dưới.
Kiểm tra nhật ký từ tất cả các dịch vụ container.
Kiểm tra nhật ký cho từng dịch vụ container db và máy chủ.
Trong ví dụ này, dịch vụ container Gitea sẽ chạy với tên miền git.howtoforge.local và SSL Letsencrypt được bật. Vì vậy, trước khi bạn thiết lập proxy ngược nginx, hãy đảm bảo rằng bạn đã tạo tên miền và SSL Letsencrypted cho tên miền của mình.
Bây giờ hãy cài đặt gói Nginx bằng lệnh apt bên dưới.
Nhập Y để xác nhận cài đặt và nhấn ENTER để tiếp tục.
Tiếp theo, tạo cấu hình SSL mới /etc/nginx/snippets/ssl.conf bằng trình soạn thảo nano.
Thêm cấu hình sau vào tệp. Ngoài ra, bạn sẽ cần thay đổi đường dẫn chứng chỉ SSL.
Lưu và đóng tệp khi bạn hoàn tất.
Tiếp theo, tạo cấu hình khối máy chủ Nginx mới cho proxy ngược Gitea /etc/nginx/sites-available/gitea.conf bằng trình soạn thảo nano.
Thêm cấu hình sau vào tệp và đảm bảo t thay đổi tên miền git.howtoforge.local bằng tên miền của bạn.
Lưu và đóng tệp khi bạn hoàn tất.
Bây giờ hãy chạy lệnh sau để kích hoạt cấu hình khối máy chủ gitea.conf và xác minh cấu hình Nginx.
Nếu cấu hình của bạn đúng, bạn sẽ thấy thông báo đầu ra như "cú pháp ok - thử nghiệm thành công".
Cuối cùng, hãy khởi động lại dịch vụ nginx để áp dụng cấu hình khối máy chủ Nginx mới gitea.conf và cấu hình SSL ssl.conf.
Bây giờ bạn đã hoàn tất cấu hình Nginx dưới dạng proxy ngược cho dịch vụ vùng chứa Gitea, hiện đang chạy trên tên miền https://git.howtoforge.local với SSL được bật trên đó.
Trong phần Cấu hình ban đầu, hãy để mặc định vì nó tự động điền thông tin xác thực cơ sở dữ liệu PostgreSQL từ tệp docker-compose.yml.
Bây giờ hãy thay đổi "Miền máy chủ" và "URL cơ sở Gitea" của Gitea bằng cài đặt tên miền của bạn. Trong ví dụ này, tên miền là https://git.howtoforge.local.
Trong phần "Cài đặt tùy chọn", hãy nhấp vào mũi tên trên "Cài đặt tài khoản quản trị viên". Bây giờ hãy nhập tên người dùng quản trị mới, mật khẩu và địa chỉ email cho máy chủ Gitea của bạn và nhấp vào nút "Cài đặt Gitea".
Sau khi quá trình cài đặt hoàn tất, bạn sẽ được chuyển hướng đến trang chủ Gitea và đăng nhập với tư cách là người dùng mới mà bạn vừa tạo.
Quá trình cài đặt và cấu hình Gitea với Docker trên Ubuntu 22.04 mới nhất đã hoàn tất và thành công.
Mục tiêu chính của Gitea là cung cấp cách dễ nhất, nhanh nhất và đơn giản nhất để tạo và triển khai dịch vụ Git trên máy chủ của bạn. Ngoài ra, Gitea hỗ trợ nhiều phương thức xác thực như LDAP, PAM, SMTP và FreeIPA. Đối với các sự kiện kho lưu trữ webhook, Gitea hỗ trợ nhiều webhook như Slack, Discord, Microsoft Team, Telegram, v.v.
Trong hướng dẫn này, bạn sẽ tìm hiểu cách cài đặt và cấu hình máy chủ Git tự lưu trữ có tên Gitea với Docker trên máy chủ Ubuntu 22.04 mới nhất. Bài viết này cũng hướng dẫn cài đặt và cấu hình máy chủ web Nginx như một proxy ngược cho dịch vụ container Gitea.
Điều kiện tiên quyết
- Máy chủ Ubuntu - hướng dẫn này sử dụng máy chủ Ubuntu 22.04 mới nhất.
- Người dùng không phải root có quyền root - hoặc bạn cũng có thể sử dụng người dùng root.
Cài đặt và cấu hình Docker
Bước đầu tiên bạn sẽ thực hiện là cài đặt và cấu hình Docker trên máy Ubuntu của mình. Đối với hướng dẫn này, bạn sẽ cài đặt Docker từ kho lưu trữ Docker chính thức, vì vậy bạn sẽ cần thêm khóa GPG và kho lưu trữ Docker vào hệ thống của mình.Trước khi bắt đầu, hãy chạy lệnh apt bên dưới để cài đặt các gói phụ thuộc cơ bản như gnupg2 và curl.
Mã:
sudo apt install \
ca-certificates \
curl \
gnupg \
lsb-release
Mã:
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Mã:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Mã:
sudo apt update
Cuối cùng, bạn có thể cài đặt công cụ Docker vào hệ thống Ubuntu của mình bằng lệnh sau. Gói docker-compose plugin là sự thay thế cho Docker Compose, hiện có thể được sử dụng làm plugin cho Docker.
Mã:
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
Bây giờ hãy chạy lệnh docker bên dưới để xác minh quá trình cài đặt Docker của bạn.
Mã:
sudo docker run hello-world
Thiết lập Môi trường triển khai Gitea
Sau khi bạn đã cài đặt Docker thành công, bây giờ bạn sẽ thiết lập môi trường cài đặt Gitea. Trong ví dụ này, dịch vụ vùng chứa Gitea sẽ chạy dưới dạng người dùng không phải root, vì vậy bạn sẽ cần tạo một người dùng mới trên hệ thống của mình và thêm người dùng vào nhóm 'docker' để cho phép người dùng thực thi và chạy các vùng chứa Docker.Chạy lệnh bên dưới để thêm một người dùng mới có tên là gitea. Tùy chọn -m ở đây được sử dụng để tự động tạo thư mục home mới cho người dùng 'gitea' và shell mặc định cho người dùng mới là /bin/bash.
Mã:
useradd -m -s /bin/bash gitea
Mã:
usermod -aG docker gitea
Mã:
su - gitea
Mã:
docker run hello-world
Xây dựng Gitea Container Services
Sau khi thêm người dùng mới để chạy dịch vụ container Gitea, giờ bạn sẽ thiết lập cài đặt dự án Gitea. Tất cả các lệnh trong phần này đều chạy dưới người dùng mới 'gitea'.Trước tiên, hãy tạo một thư mục dự án mới có tên "myapp" và thay đổi thư mục làm việc thành thư mục đó.
Mã:
mkdir -p myapp; cd myapp/
Mã:
nano docker-compose.yml
Mã:
version: "2"
volumes:
gitea-data:
driver: local
gitea-config:
driver: local
services:
server:
image: gitea/gitea:1.16.8-rootless
environment:
- GITEA__database__DB_TYPE=postgres
- GITEA__database__HOST=db:5432
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=gitea
khởi động lại: luôn luôn
khối lượng:
- ./data:/var/lib/gitea
- gitea-data:/var/lib/gitea
- ./config:/etc/gitea
- gitea-config:/etc/gitea
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
cổng:
- "3000:3000"
- "2222:2222"
phụ thuộc vào:
- db
db:
hình ảnh: postgres:14
khởi động lại: luôn luôn
môi trường:
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=gitea
- POSTGRES_DB=gitea
khối lượng:
- ./postgres:/var/lib/postgresql/data
Với các cấu hình này, bạn sẽ tạo các tài nguyên sau:
- Hai ổ đĩa Docker gitea-data và gitea-config để lưu trữ dữ liệu người dùng Gitea và các tệp cấu hình.
- Hai dịch vụ có tên "server" và "db".
- Dịch vụ chứa Gitea sẽ chạy với tên "server", dựa trên hình ảnh Docker "gitea/gitea:1.16.8-rootless" và xuất các cổng TCP 3000 và 2222.
- Dịch vụ chứa Gitea sẽ chạy với dịch vụ cơ sở dữ liệu PostgreSQL có tên là "db".
- Dịch vụ "db" sẽ chạy như cơ sở dữ liệu cho dịch vụ Gitea với hình ảnh Docker mặc định là PostgreSQL "postgres:14". Tất cả dữ liệu liên quan đến dịch vụ "db" sẽ được lưu trữ cục bộ trên thư mục có tên "postgres".
Mã:
docker compose up -d
Khi tất cả quá trình hoàn tất, bạn sẽ thấy đầu ra giống như ảnh chụp màn hình sau.
Bây giờ hãy chạy lệnh docker bên dưới để kiểm tra các dịch vụ container Gitea.
Mã:
docker compose ps
Dịch vụ Gitea đang chạy trên máy chủ cục bộ với cổng 3000. Và cổng 2222 có thể được sử dụng cho các kết nối SSH.
nếu bạn gặp lỗi trong quá trình cài đặt, bạn luôn kiểm tra nhật ký của các dịch vụ container bằng các lệnh bên dưới.
Kiểm tra nhật ký từ tất cả các dịch vụ container.
Mã:
docker compose logs
Mã:
docker compose logs db
docker compose logs server
Thiết lập Nginx làm Proxy ngược cho Gitea
Bạn đã hoàn tất cài đặt dịch vụ container Gitea, bây giờ bạn sẽ cài đặt và cấu hình máy chủ web Nginx làm proxy ngược cho dịch vụ container Gitea đang chạy trên cổng mặc định 3000.Trong ví dụ này, dịch vụ container Gitea sẽ chạy với tên miền git.howtoforge.local và SSL Letsencrypt được bật. Vì vậy, trước khi bạn thiết lập proxy ngược nginx, hãy đảm bảo rằng bạn đã tạo tên miền và SSL Letsencrypted cho tên miền của mình.
Bây giờ hãy cài đặt gói Nginx bằng lệnh apt bên dưới.
Mã:
sudo apt install nginx
Tiếp theo, tạo cấu hình SSL mới /etc/nginx/snippets/ssl.conf bằng trình soạn thảo nano.
Mã:
sudo nano /etc/nginx/snippets/ssl.conf
Mã:
ssl_certificate /etc/letsencrypt/live/git.howtoforge.local/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/git.howtoforge.local/privkey.pem;
# từ https://cipherli.st/
# và https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets tắt;
#ssl_stapling bật;
#ssl_stapling_verify bật;
#resolver 8.8.8.8 8.8.4.4 valid=300 giây;
#resolver_timeout 5 giây;
# Tắt tải trước HSTS ngay bây giờ. Bạn có thể sử dụng dòng tiêu đề được chú thích bao gồm
# chỉ thị "preload" nếu bạn hiểu ý nghĩa của nó.
#add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
Tiếp theo, tạo cấu hình khối máy chủ Nginx mới cho proxy ngược Gitea /etc/nginx/sites-available/gitea.conf bằng trình soạn thảo nano.
Mã:
sudo nano /etc/nginx/sites-available/gitea.conf
Mã:
server {
server_name git.howtoforge.local;
listen 443 ssl http2;
include snippets/ssl.conf;
# Tệp nhật ký
access_log /var/log/nginx/gitea.access.log;
error_log /var/log/nginx/gitea.error.log;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Bây giờ hãy chạy lệnh sau để kích hoạt cấu hình khối máy chủ gitea.conf và xác minh cấu hình Nginx.
Mã:
sudo ln -s /etc/nginx/sites-available/gitea.conf /etc/nginx/sites-enabled/
sudo nginx -t
Cuối cùng, hãy khởi động lại dịch vụ nginx để áp dụng cấu hình khối máy chủ Nginx mới gitea.conf và cấu hình SSL ssl.conf.
Mã:
sudo systemctl restart nginx
Bắt đầu cấu hình cài đặt Gitea
Để bắt đầu cài đặt và cấu hình Gitea, hãy mở trình duyệt web của bạn và truy cập tên miền gitea để cài đặt (ví dụ: https://git.howtoforge.local). Và bây giờ bạn sẽ thấy trang cài đặt Gitea.Trong phần Cấu hình ban đầu, hãy để mặc định vì nó tự động điền thông tin xác thực cơ sở dữ liệu PostgreSQL từ tệp docker-compose.yml.
Bây giờ hãy thay đổi "Miền máy chủ" và "URL cơ sở Gitea" của Gitea bằng cài đặt tên miền của bạn. Trong ví dụ này, tên miền là https://git.howtoforge.local.
Trong phần "Cài đặt tùy chọn", hãy nhấp vào mũi tên trên "Cài đặt tài khoản quản trị viên". Bây giờ hãy nhập tên người dùng quản trị mới, mật khẩu và địa chỉ email cho máy chủ Gitea của bạn và nhấp vào nút "Cài đặt Gitea".
Sau khi quá trình cài đặt hoàn tất, bạn sẽ được chuyển hướng đến trang chủ Gitea và đăng nhập với tư cách là người dùng mới mà bạn vừa tạo.
Quá trình cài đặt và cấu hình Gitea với Docker trên Ubuntu 22.04 mới nhất đã hoàn tất và thành công.