Dev · بدون KYC
میزبانی Gitea روی VPS آفشور
پلتفرم Git سبک و اختصاصی خود را روی یک VPS بدون KYC و قابلپرداخت با ارز دیجیتال اجرا کنید و تمام مخزنها (repo)، ایشوها (issue) و پایپلاینهای CI را دور از کلودهای شخص ثالث نگه دارید.
این چیست
Gitea یک سرویس Git خودمیزبان است که با زبان Go نوشته شده — یک جایگزین سبک برای GitHub/GitLab که مخزنها (repository)، پول ریکوئستها (pull request)، ایشوها (issue)، ویکیها، ریلیزها (release) و Actions (CI/CD) را ارائه میدهد. این نرمافزار بهصورت یک باینری تکی یا image داکر عرضه میشود و مصرف حافظهی کمی دارد، که آن را برای تیمهایی که میخواهند کنترل کامل بر کد منبع خود داشته باشند ایدهآل میسازد.
چرا میزبانی آفشور
کد منبع یکی از حساسترین دادههایی است که یک تیم در اختیار دارد؛ میزبانی آن روی یک VPS آفشور و بدون هویت، آن را از دسترس پلتفرمهای بزرگ میزبانی کد و سیاستهای نگهداری داده و حذف محتوای آنها دور نگه میدارد. پرداخت با ارز دیجیتال و بدون KYC یعنی زیرساخت پروژهی شما به هیچ هویت شرکتی گره نمیخورد، و پهنای باند نامحدود اجازه میدهد cloneها، اجراهای CI و دانلود ریلیزها بدون غافلگیری در محاسبهی مصرف جریان داشته باشند.
استقرار
یک پیکربندی مرجع کاربردی
این را روی یک instance تازه از ChainVPS کپی کنید. جایگزینها را با مقادیر واقعی جایگزین کنید، سپس آن را راهاندازی کنید.
# docker-compose.yml — Gitea + PostgreSQL on Ubuntu 24.04
# 1) apt install docker.io docker-compose-v2
# 2) put this file in /opt/gitea and run: docker compose up -d
# 3) open http://SERVER_IP:3000 to finish the web installer
services:
server:
image: gitea/gitea:1.22
container_name: gitea
restart: always
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=postgres
- GITEA__database__HOST=db:5432
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=CHANGE_ME_STRONG_DB_PW
# correct clone URLs — set to your domain once DNS is ready:
- GITEA__server__DOMAIN=git.example.com
- GITEA__server__ROOT_URL=https://git.example.com/
- GITEA__server__SSH_PORT=222
- GITEA__service__DISABLE_REGISTRATION=true
volumes:
- ./gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000" # web UI — front with a TLS reverse proxy in production
- "222:22" # git-over-SSH (host 222 -> container 22)
depends_on:
- db
networks:
- gitea
db:
image: postgres:16
container_name: gitea-db
restart: always
environment:
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=CHANGE_ME_STRONG_DB_PW
- POSTGRES_DB=gitea
volumes:
- ./postgres:/var/lib/postgresql/data
networks:
- gitea
networks:
gitea:
external: false
فایروال
پورتهایی که باید باز شوند
| پورت | پروتکل | هدف |
|---|---|---|
| 3000 | TCP | رابط وب Gitea و git از طریق HTTP — در محیط production پشت یک reverse proxy با TLS نگه دارید |
| 222 | TCP | Git-over-SSH (پورت هاست که به پورت 22 کانتینر مپ شده) برای clone/push از طریق کلیدهای SSH |
| 443 | TCP | HTTPS از طریق reverse proxy شما، پس از آمادهشدن دامنه و گواهی (cert) |
| 22 | TCP | SSH هاست برای ادمین — روی پورتی جدا از پورت 222 مربوط به Gitea و صرفاً با کلید نگه دارید |
تعیین اندازه مناسب
به کدام پلن نیاز دارید
VPS Nano/Small (1-2 vCPU، 2 GB RAM)
توسعهدهندهی تکی یا چند کاربر انگشتشمار، چند ده مخزن، بدون CI. Gitea در حالت بیکار حدود 150-200 MB RAM مصرف میکند.
VPS Pro (2-4 vCPU، 4-8 GB RAM)
تیم کوچک، پول ریکوئستهای (pull request) فعال، بهعلاوه یک یا دو runner برای Gitea Actions جهت CI. برای فایلهای انتشار (release) حجیم یک والیوم ذخیرهسازی اضافه کنید.
Dedicated (یا Storage VPS برای مخزنها)
کاربران همزمان زیاد، مونوریپوهای بزرگ، همزمانی سنگین CI یا رسانههای حجیم LFS. CPU اختصاصی عملیات clone/pack را سریع نگه میدارد؛ آن را با یک پلن Storage برای دادههای repo/LFS ترکیب کنید.
بهترین مکانها: یک موقعیت با سطح حریم خصوصی بالا انتخاب کنید — سوئیس (CH) و ایسلند (IS) قویترین وضعیت حفاظت از داده را برای کد منبع ارائه میدهند، و هلند (NL)، رومانی (RO)، مولداوی (MD) و لوکزامبورگ (LU) بهعنوان جایگزینهای آفشور مطمئن در دسترساند. منطقهای را انتخاب کنید که به مشارکتکنندگان شما نزدیکتر باشد تا تأخیر (latency) clone/push کاهش یابد، چرا که رفتوبرگشتهای git به تأخیر حساس هستند.
آن را قفل کنید
چکلیست سختسازی امنیتی
- هرگز پورت 3000 را بهصورت خام روی اینترنت باز نگذارید — Gitea را پشت یک reverse proxy با TLS (Caddy با HTTPS خودکار یا Nginx + certbot) قرار دهید و GITEA__server__ROOT_URL را روی دامنهی https تنظیم کنید تا URLهای clone صحیح باشند.
- بلافاصله پس از ایجاد حساب ادمین خود، DISABLE_REGISTRATION=true را تنظیم کنید (که از پیش در compose موجود است) تا هیچکس نتواند خودش ثبتنام کند؛ کاربران را بهصورت دستی یا از طریق پنل ادمین دعوت کنید.
- git-over-SSH را روی پورت 222 و sshd خود هاست را روی پورتی متفاوت نگه دارید، هر دو صرفاً با کلید (PasswordAuthentication no)؛ Gitea فایل authorized_keys را بهصورت داخلی مدیریت میکند، پس آن را دستی ویرایش نکنید.
- 2FA را برای هر حساب فعال کنید و آن را برای ادمین اجباری کنید؛ رمز عبور دیتابیس را از environment خارج کرده و در یک Docker secret یا فایل .env با دسترسی 600 قرار دهید.
- بهصورت زمانبندیشده از ./gitea (مخزنها، تنظیمات، LFS) و یک pg_dump از دیتابیس gitea پشتیبان بگیرید، و image را به یک تگ نسخهی مشخص (gitea/gitea:1.22) پین کنید نه latest، تا ارتقاها آگاهانه انجام شوند — پیش از ارتقای نسخههای اصلی (major)، release notes را بخوانید.
پرسشها
هاستینگ Gitea — سوالات متداول
آیا میتوانم CI/CD را بدون یک سرویس جداگانه اجرا کنم؟
بله. Gitea دارای Actions داخلی است (سازگار با GitHub Actions). آن را فعال کنید، سپس یک کانتینر runner (gitea/act_runner) را در برابر instance خود ثبت کنید. برای بار واقعی CI، از یک پلن Medium یا بزرگتر استفاده کنید تا buildها سرویس وب را از منابع محروم نکنند.
SQLite، MySQL یا PostgreSQL؟
SQLite برای یک کاربر تکی و سبک کار میکند و به کانتینر دیتابیس جداگانه نیازی ندارد. برای هر تیم یا مسیر رشد، از PostgreSQL همانطور که در compose نشان داده شده استفاده کنید — همزمانی (concurrency) را بسیار بهتر مدیریت میکند و پشتیبانگیری با pg_dump از آن بسیار ساده است.
چگونه مخزنهای خود را از GitHub/GitLab مهاجرت دهم؟
ابزار مهاجرت داخلی Gitea یک مخزن را از طریق URL آن، بههمراه ایشوها، PRها، ریلیزها و ویکی وارد میکند. برای دریافت مخزنهای خصوصی و متادیتا، یک توکن مربوط به پلتفرم مبدأ را در فرم مهاجرت وارد کنید.
آیا این سیستم فایلهای حجیم (Git LFS) را پشتیبانی میکند؟
بله، LFS بهصورت بومی پشتیبانی میشود و در مسیر /data ذخیره میگردد. اگر فایلهای باینری یا رسانهای حجیم میزبانی میکنید، ./gitea را روی یک والیوم Storage VPS قرار دهید و فضای دیسک را متناسب با آن در نظر بگیرید — حجم آبجکتهای LFS بهسرعت افزایش مییابد.
آیا کد من روی یک هاست بدون KYC خصوصی باقی میماند؟
مخزنهای شما بهطور کامل روی دیسک VPS شما و در حوزهی قضایی آفشوری که انتخاب کردهاید قرار دارند؛ هیچچیز برای شخص ثالثی mirror نمیشود. ثبتنام را غیرفعال نگه دارید، از HTTPS + کلیدهای SSH استفاده کنید، 2FA را فعال کنید و برای کنترل کامل، از بکاپهای رمزنگاریشدهی خارج از سرور (off-box) بگیرید.
موارد بیشتر برای میزبانی شخصی
سایر استکهای تککلیکی
راهاندازی کنید Gitea
در 60 ثانیه آینده.
پهنای باند نامحدود · محافظت DDoS شامل است · 21 ارز دیجیتال · بدون KYC.