Skip to content

Instantly share code, notes, and snippets.

@CappyT
Created January 26, 2026 15:55
Show Gist options
  • Select an option

  • Save CappyT/4df97556349375a44a43b4d6011e0ded to your computer and use it in GitHub Desktop.

Select an option

Save CappyT/4df97556349375a44a43b4d6011e0ded to your computer and use it in GitHub Desktop.
Help Keep Iran Connected: Conduit Proxy Setup

🗽 Conduit Proxy: Help Keep Iran Connected

TL;DR: Help the Iranian population bypass censorship by running a lightweight, low-maintenance proxy. It requires no public IP, acts only as a bridge (not an exit node), and can be deployed via Kubernetes or Docker in seconds.

ℹ️ Context

Access to information is a human right. Due to severe internet censorship in Iran, many citizens are cut off from the rest of the world.

This repository provides deployment manifests for Conduit, a censorship circumvention tool developed by Psiphon. By running a Conduit proxy, you act as a "pass-through" node, helping users in censored regions connect to the Psiphon network.

The software used here is a Linux fork of the official Conduit software (which typically runs on Windows/Android).

Your contribution, no matter how small, makes a tangible difference in people's lives.

🛡️ Security & Privacy (Read this first)

Before deploying, here is what you need to know about how this affects your infrastructure. It is safe for most corporate and home labs because:

  1. You are NOT an Exit Node:

    • Your server simply shuffles encrypted packets from the user to the Psiphon entry point.

    • Your IP address is NOT the origin of the traffic seen by the final destination website. You are merely the bridge.

  2. No Public IP/Ingress Required:

    • The proxy connects out via STUN/TURN. You do not need to open ports, configure Ingress, or expose a Service with a LoadBalancer.
  3. Auditable Code:

    • The container uses an open-source fork. You are encouraged to vet the code in the linked repository.

🚀 Deployment Options

Option A: Kubernetes (StatefulSet)

Ideal for existing clusters. Requires a PVC for minor state storage (keys/identity).

statefulset.yaml

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: conduit-proxy
  namespace: conduit
spec:
  selector:
    matchLabels:
      app: conduit-proxy
  serviceName: conduit-proxy
  replicas: 1
  template:
    metadata:
      labels:
        app: conduit-proxy
    spec:
      securityContext:
        fsGroup: 10001
        fsGroupChangePolicy: OnRootMismatch
      containers:
      - name: conduit-proxy
        securityContext:
          runAsUser: 10001
          runAsGroup: 10001
          allowPrivilegeEscalation: false
          privileged: false
          capabilities:
            drop:
            - ALL
        image: ghcr.io/ssmirr/conduit/conduit:2fd31d4
        args:
          - "start"
          - --data-dir
          - "/data"
          - "--max-clients"
          - "200"
          - "--bandwidth"
          - "5"
        resources:
          limits:
            memory: "256Mi"
            cpu: "500m"
          requests:
            memory: 128Mi
            cpu: 100m
        volumeMounts:
          - mountPath: /data
            name: conduit-data
  volumeClaimTemplates:
  - metadata:
      name: conduit-data
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 100Mi

Option B: Docker Compose

For those running on a VPS or a home lab without K8s.

docker-compose.yml

services:
  conduit-proxy:
    image: ghcr.io/ssmirr/conduit/conduit:2fd31d4
    restart: unless-stopped
    command:
      - start
      - --data-dir
      - /home/conduit/data
      - --max-clients
      - "200"
      - --bandwidth
      - "5"
    volumes:
      - conduit-data:/home/conduit/data

volumes:
  conduit-data:

📚 References & Deep Dive

If you want to understand the technical and geopolitical context deeper:

🙏 Thank You

By running this container, you are actively helping to keep the internet open and accessible for everyone.

🗽 پروکسی Conduit: کمک به حفظ اتصال اینترنت در ایران

خلاصه (TL;DR): با اجرای یک پروکسی سبک و کم‌دردسر، به مردم ایران کمک کنید تا از سد سانسور عبور کنند. این ابزار نیاز به IP عمومی (Public IP) ندارد، تنها به عنوان یک پل (Bridge) عمل می‌کند (نه Exit Node)، و می‌توان آن را در چند ثانیه با کوبرنتیز (Kubernetes) یا داکر (Docker) راه‌اندازی کرد.

ℹ️ زمینه (Context)

دسترسی به اطلاعات یکی از حقوق بشر است. به دلیل سانسور شدید اینترنت در ایران، بسیاری از شهروندان از دسترسی به شبکه جهانی محروم شده‌اند.

این مخزن (Repository) فایل‌های لازم برای راه‌اندازی Conduit را فراهم می‌کند؛ ابزاری برای دور زدن سانسور که توسط Psiphon توسعه یافته است. با اجرای یک پروکسی Conduit، شما به عنوان یک گره "واسط" عمل می‌کنید و به کاربران در مناطق تحت سانسور کمک می‌کنید تا به شبکه سایفون متصل شوند.

نرم‌افزار استفاده شده در اینجا یک نسخه لینوکس (Fork) از نرم‌افزار اصلی Conduit است (که معمولاً برای ویندوز و اندروید موجود است).

کمک شما، هرچند کوچک، تأثیر ملموسی در زندگی مردم دارد.

🛡️ امنیت و حریم خصوصی (لطفاً ابتدا بخوانید)

قبل از راه‌اندازی، لازم است بدانید که این ابزار چگونه بر زیرساخت شما تأثیر می‌گذارد. این روش برای اکثر شرکت‌ها و سرورهای خانگی امن است زیرا:

۱. شما Exit Node نیستید:

  • سرور شما صرفاً بسته‌های رمزگذاری شده را از کاربر به نقطه ورودی سایفون منتقل می‌کند.

  • آدرس IP شما به عنوان منبع ترافیک در وب‌سایت مقصد دیده نمی‌شود. شما فقط نقش یک پل را دارید.

۲. نیاز به IP عمومی یا Ingress ندارید:

  • پروکسی از طریق STUN/TURN به بیرون متصل می‌شود. نیازی به باز کردن پورت‌ها، پیکربندی Ingress یا استفاده از LoadBalancer نیست.

۳. کد قابل بررسی (Auditable):

  • این کانتینر از یک فورک متن‌باز (Open Source) استفاده می‌کند. شما تشویق می‌شوید که کد موجود در مخزن لینک شده را بررسی کنید.

🚀 گزینه‌های راه‌اندازی (Deployment Options)

گزینه الف: کوبرنتیز (StatefulSet)

ایده‌آل برای کلاسترهای موجود. نیاز به یک PVC برای ذخیره وضعیت‌های جزئی (کلیدها/هویت) دارد.

statefulset.yaml

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: conduit-proxy
  namespace: conduit
spec:
  selector:
    matchLabels:
      app: conduit-proxy
  serviceName: conduit-proxy
  replicas: 1
  template:
    metadata:
      labels:
        app: conduit-proxy
    spec:
      securityContext:
        fsGroup: 10001
        fsGroupChangePolicy: OnRootMismatch
      containers:
      - name: conduit-proxy
        securityContext:
          runAsUser: 10001
          runAsGroup: 10001
          allowPrivilegeEscalation: false
          privileged: false
          capabilities:
            drop:
            - ALL
        image: ghcr.io/ssmirr/conduit/conduit:2fd31d4
        args:
          - "start"
          - --data-dir
          - "/data"
          - "--max-clients"
          - "200"
          - "--bandwidth"
          - "5"
        resources:
          limits:
            memory: "256Mi"
            cpu: "500m"
          requests:
            memory: 128Mi
            cpu: 100m
        volumeMounts:
          - mountPath: /data
            name: conduit-data
  volumeClaimTemplates:
  - metadata:
      name: conduit-data
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 100Mi

گزینه ب: داکر کامپوز (Docker Compose)

برای کسانی که روی سرور مجازی (VPS) یا سیستم خانگی بدون کوبرنتیز اجرا می‌کنند.

docker-compose.yml

services:
  conduit-proxy:
    image: ghcr.io/ssmirr/conduit/conduit:2fd31d4
    restart: unless-stopped
    command:
      - start
      - --data-dir
      - /home/conduit/data
      - --max-clients
      - "200"
      - --bandwidth
      - "5"
    volumes:
      - conduit-data:/home/conduit/data

volumes:
  conduit-data:

📚 منابع و اطلاعات تکمیلی

اگر می‌خواهید در مورد زمینه فنی و سیاسی موضوع بیشتر بدانید:

🙏 سپاسگزاریم

با اجرای این کانتینر، شما فعالانه به باز و قابل دسترس نگه داشتن اینترنت برای همه کمک می‌کنید.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment