Compare commits

...
24 Commits
Author SHA1 Message Date
y1lm0z e726709f61 Merge branch 'main' of https://git.y1lm0z.me/y1lm0z/Runtipi-store
merg
2026-09-06 17:02:12 +03:00
y1lm0z fbb2527b52 lidar - ytd 2026-09-06 17:00:30 +03:00
y1lm0z c0e6aa94b5 apps/gluetun-qbittorrent/config.json Güncelle 2026-08-29 10:20:17 +00:00
y1lm0z f5c4625e9b qbit + VPN 2026-08-29 13:15:35 +03:00
y1lm0z 2b84aa90e1 qbit + VPN 2026-08-29 13:15:01 +03:00
y1lm0z 97ec948b3c qbit + VPN 2026-08-29 12:57:00 +03:00
y1lm0z 9fcdce389d qbit + VPN 2026-08-29 00:46:50 +03:00
y1lm0z 548baedfaf qbit + VPN 2026-08-27 00:25:37 +03:00
y1lm0z b2ab702f00 delete 2026-08-27 00:25:06 +03:00
y1lm0z fa800942d2 apps/gluetun/docker-compose.yml Güncelle 2026-08-26 08:56:44 +00:00
y1lm0z 6b6d042423 qbit 2026-08-26 11:36:31 +03:00
y1lm0z 864d71bff1 'apps/gluetun-transmission' dizinini sil 2026-08-26 08:27:01 +00:00
y1lm0z 82be64d1e7 transition + VPN 2026-08-25 00:35:11 +03:00
y1lm0z 3384c01970 Runtipi store düzenleem 2026-07-16 11:10:04 +03:00
y1lm0z 6a3eeee60a Runtipi store düzenleem 2026-07-16 10:26:36 +03:00
y1lm0z b18325fbef test 2026-07-16 01:50:29 +03:00
y1lm0z 3492f7b8e4 Dosyaları "apps/matrix" dizinine yükle 2026-07-15 22:33:21 +00:00
y1lm0z 2b52534c05 apps/matrix/docker-compose.yml Sil 2026-07-15 22:32:55 +00:00
y1lm0z 8441e35d01 apps/matrix/config.json Sil 2026-07-15 22:32:48 +00:00
y1lm0z 2fc81f2853 apps/matrix/config.json Güncelle 2026-07-15 22:27:59 +00:00
y1lm0z 95b92dc1e6 Dosyaları "apps/matrix/ngnix" dizinine yükle 2026-07-15 22:17:23 +00:00
y1lm0z 36a17fbe2d Dosyaları "apps/matrix/metadata" dizinine yükle 2026-07-15 22:16:55 +00:00
y1lm0z 93934ee468 Dosyaları "apps/matrix" dizinine yükle 2026-07-15 22:16:33 +00:00
y1lm0z 23684d5aa5 Runtipi store düzenleem 2026-07-14 12:13:39 +03:00
21 changed files with 500 additions and 0 deletions
+38
View File
@@ -0,0 +1,38 @@
{
"name": "ConvertX",
"id": "convertx",
"available": true,
"dynamic_config": true,
"tipi_version": 1,
"version": "latest",
"short_desc": "1000'den fazla format arasinda dosya donusturucu (video, resim, ses, belge).",
"author": "C4illin",
"port": 3000,
"categories": ["utilities", "media"],
"description": "ConvertX, FFmpeg, ImageMagick, Pandoc ve Calibre motorlarini birlestiren self-hosted bir dosya donusturucudur. mp4<->avi, png<->jpg, webp, mkv, docx, epub gibi 1000'den fazla format arasinda tarayicidan donusturme yapabilirsin. Toplu (batch) donusturme ve coklu kullanici hesabi destekler.",
"source": "https://github.com/C4illin/ConvertX",
"website": "https://github.com/C4illin/ConvertX",
"exposable": true,
"force_expose": false,
"https": true,
"supported_architectures": ["arm64", "amd64"],
"form_fields": [
{
"type": "random",
"label": "JWT Secret (otomatik)",
"hint": "Oturum imzalama anahtari, kurulumda otomatik uretilir. Degistirmene gerek yok.",
"required": true,
"env_variable": "JWT_SECRET",
"encoding": "hex",
"min": 32
},
{
"type": "boolean",
"label": "Yeni hesap kaydina izin ver",
"hint": "GUVENLIK UYARISI: Public internete actiysan bunu SADECE ilk hesabini olusturana kadar acik tut, sonra tekrar kapat. Acik kalirsa herkes hesap acip sunucunun islem gucunu kullanabilir.",
"required": false,
"default": false,
"env_variable": "ACCOUNT_REGISTRATION"
}
]
}
+24
View File
@@ -0,0 +1,24 @@
services:
convertx:
image: ghcr.io/c4illin/convertx
restart: unless-stopped
environment:
# JWT oturum imzalama anahtari - config.json'daki "random" alaniyla
# kurulumda otomatik uretilir.
- JWT_SECRET=${JWT_SECRET}
# Public'e acacagin icin bunlar guvenlik amacli sabit tutuluyor:
# - Kimliksiz (login'siz) hic kimse dosya donusturemesin
# - HTTPS uzerinden geldigimiz icin HTTP_ALLOWED'a gerek yok
- ALLOW_UNAUTHENTICATED=false
- HTTP_ALLOWED=false
# Ilk kurulumda bir kez true yapip kendi hesabini olustur, sonra
# tekrar false'a cekmen onerilir (asagida config.json'da form alani var).
- ACCOUNT_REGISTRATION=${ACCOUNT_REGISTRATION:-false}
volumes:
- ${APP_DATA_DIR}/data:/app/data
x-runtipi:
is_main: true
internal_port: 3000
x-runtipi:
schema_version: 2
+25
View File
@@ -0,0 +1,25 @@
# ConvertX
ConvertX, FFmpeg, ImageMagick, Pandoc ve Calibre motorlarini bir araya
getiren self-hosted bir dosya donusturucudur. 1000'den fazla format
arasinda donusum yapabilirsin: mp4 <-> avi <-> mkv, png <-> jpg <-> webp,
docx <-> pdf, epub ve daha fazlasi.
## Public internete acarken ONEMLI guvenlik notlari
Bu uygulama sunucunun CPU'sunu kullanarak dosya donusturuyor. Internete
acik ve korumasiz birakilirsa herkes hesap acip sunucunun kaynaklarini
tuketebilir. Bu yuzden:
1. Kurulum tamamlandiktan sonra **"Yeni hesap kaydina izin ver"** ayarini
GECICI olarak ac, kendi hesabini olustur, sonra tekrar KAPAT.
2. `ALLOW_UNAUTHENTICATED` degeri kasitli olarak `false` sabitlenmis
durumda - boylece giris yapmayan kimse dosya donusturemiyor.
3. Hesabini olusturduktan sonra kayit kapaliyken bile sen giris yapmaya
devam edebilirsin, sadece yeni hesap acilamaz.
## Kullanim
Kurulumdan sonra siteye giris yap, "Create account" ile ilk hesabini
olustur (sadece kayit acikken gorunur), sonra dosyalarini surukle-birak
ile yukleyip cikti formatini secerek donustur.
Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

+52
View File
@@ -0,0 +1,52 @@
{
"name": "Gluetun + qBittorrent (ProtonVPN)",
"id": "gluetun-qbittorrent",
"available": true,
"short_desc": "ProtonVPN'e WireGuard ile baglanan Gluetun VPN gecidi + arkasinda calisan qBittorrent. Kill-switch + otomatik NAT-PMP port forwarding dahil.",
"author": "y1lm0z",
"port": 61235,
"categories": ["network", "utilities"],
"description": "Tek dosyada iki container: Gluetun, ProtonVPN'e WireGuard ile baglanip kill-switch (VPN kopunca internet de kesilir) sagliyor. qBittorrent ise kendi agini kullanmiyor, Gluetun'un ag namespace'ini 'network_mode: service:gluetun' ile paylasiyor - tum torrent trafigi zorunlu olarak VPN tunelinden geciyor. ProtonVPN'in NAT-PMP port forwarding'i sayesinde Gluetun periyodik olarak port ister ve degistiginde qBittorrent'in dinleme portunu otomatik gunceller (VPN_PORT_FORWARDING_UP_COMMAND) - elle hicbir sey yapman gerekmez, seed performansi icin kritik olan bu ozellik Mullvad'da yoktu. qBittorrent, Gluetun VPN'e baglanip saglikli olana kadar baslamiyor. WebUI'ye Gluetun'un actigi 61235 portundan erisiliyor.",
"tipi_version": 1,
"version": "1.0.2",
"source": "https://github.com/qdm12/gluetun",
"website": "https://github.com/qdm12/gluetun-wiki",
"exposable": true,
"force_expose": false,
"https": false,
"no_gui": false,
"supported_architectures": ["arm64", "amd64"],
"form_fields": [
{
"type": "password",
"label": "WireGuard Private Key",
"hint": "ProtonVPN hesabi -> Downloads -> WireGuard configuration. P2P destekli (cift ok ikonlu) bir sunucu sec ve config olustururken 'NAT-PMP (Port Forwarding)' secenegini MUTLAKA ac, yoksa port forwarding calismaz. Indirdigin .conf dosyasindaki PrivateKey degeri.",
"required": true,
"env_variable": "WIREGUARD_PRIVATE_KEY"
},
{
"type": "text",
"label": "WireGuard Addresses",
"hint": "Ayni .conf dosyasindaki Address alani, IPv4 kismi (orn. 10.2.0.2/32)",
"placeholder": "10.2.0.2/32",
"required": true,
"env_variable": "WIREGUARD_ADDRESSES"
},
{
"type": "text",
"label": "Sunucu Ulkeleri",
"hint": "ONEMLI: bos birakma - bos birakirsan Gluetun P2P desteklemeyen bir sunucuya baglanabilir ve port forwarding hic calismaz. Virgulle ayrilmis ulke adlari, orn: Netherlands,Switzerland",
"default": "Netherlands",
"required": false,
"env_variable": "SERVER_COUNTRIES"
},
{
"type": "text",
"label": "Firewall Outbound Subnets",
"hint": "Docker ve LAN aginin WebUI'ye erisebilmesi icin izinli subnetler.",
"default": "172.16.0.0/12,192.168.0.0/16",
"required": false,
"env_variable": "FIREWALL_OUTBOUND_SUBNETS"
}
]
}
@@ -0,0 +1,69 @@
services:
gluetun:
image: qmcgaw/gluetun:latest
container_name: gluetun
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun:/dev/net/tun
sysctls:
# Debian 13 + yeni kernel'de gorulen "default route not found"
# crash-loop hatasi icin: IPv6'yi bu container icin kapatiyoruz.
- net.ipv6.conf.all.disable_ipv6=1
environment:
- VPN_SERVICE_PROVIDER=protonvpn
- VPN_TYPE=wireguard
- WIREGUARD_PRIVATE_KEY=${WIREGUARD_PRIVATE_KEY}
- WIREGUARD_ADDRESSES=${WIREGUARD_ADDRESSES}
- SERVER_COUNTRIES=${SERVER_COUNTRIES:-Netherlands}
# Sadece P2P/port-forwarding destekleyen sunuculari sec - bu
# olmadan Gluetun rastgele (P2P desteklemeyen) bir sunucuya
# baglanip port forwarding'i sonsuza kadar "starting" durumunda
# birakabiliyor.
- PORT_FORWARD_ONLY=on
- FIREWALL_OUTBOUND_SUBNETS=${FIREWALL_OUTBOUND_SUBNETS:-172.16.0.0/12,192.168.0.0/16}
- TZ=${TZ}
# ProtonVPN'in NAT-PMP port forwarding'i: Gluetun otomatik port
# ister, degistiginde asagidaki komutla qBittorrent'in dinleme
# portunu ANINDA gunceller - elle hicbir sey yapman gerekmiyor.
- VPN_PORT_FORWARDING=on
- VPN_PORT_FORWARDING_PROVIDER=protonvpn
- VPN_PORT_FORWARDING_UP_COMMAND=/bin/sh -c 'wget -O- -nv --retry-connrefused --post-data "json={\"listen_port\":{{PORTS}}}" http://127.0.0.1:61235/api/v2/app/setPreferences'
ports:
# Sadece WebUI'yi host'a aciyoruz. Torrent peer portu artik ProtonVPN'in
# NAT-PMP ile atadigi DINAMIK port - bu, VPN tunelinin (tun0) uzerinden
# geliyor, Docker'in host network'unden degil, o yuzden burada ayrica
# bir port yayinlamaya gerek yok (Gluetun kendi firewall'unda otomatik
# izin veriyor).
- 61235:61235
volumes:
- ${APP_DATA_DIR}/data/gluetun:/gluetun
restart: unless-stopped
x-runtipi:
is_main: true
internal_port: 61235
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
container_name: qbittorrent
# Kendi agi yok, gluetun'un ag namespace'ini paylasiyor - tum
# trafik VPN tunelinden geciyor (kill switch qbittorrent'i de kapsar).
network_mode: "service:gluetun"
depends_on:
gluetun:
condition: service_healthy
environment:
- PUID=1000
- PGID=1000
- TZ=${TZ}
- WEBUI_PORT=61235
# Baslangic degeri - Gluetun VPN_PORT_FORWARDING_UP_COMMAND ile
# baglanir baglanmaz gercek atanan portla otomatik degistiriyor.
- TORRENTING_PORT=61234
volumes:
- ${APP_DATA_DIR}/data/config:/config
- ${APP_DATA_DIR}/data/downloads:/downloads
restart: unless-stopped
x-runtipi:
schema_version: 2
@@ -0,0 +1,41 @@
# Gluetun + qBittorrent (ProtonVPN)
Tek uygulama, iki container: **Gluetun** (VPN geçidi) ve **qBittorrent** (torrent istemcisi). qBittorrent kendi ağını kullanmıyor, `network_mode: service:gluetun` ile Gluetun'un ağ namespace'ini paylaşıyor — bu yüzden tüm torrent trafiği zorunlu olarak ProtonVPN tüneli üzerinden geçiyor. VPN koparsa qBittorrent'in de interneti anında kesilir (kill switch).
**Fark yaratan özellik:** ProtonVPN, NAT-PMP ile gerçek port forwarding destekliyor (Mullvad 2023'te bunu kaldırmıştı). Gluetun bu portu otomatik ister ve her değiştiğinde qBittorrent'in dinleme portunu **kendisi günceller** — seed performansı için kritik olan bu adım tamamen otomatik.
## Kurulum
1. ProtonVPN hesabı**Downloads → WireGuard configuration** sayfasına git.
2. **P2P destekli bir sunucu seç** (çift ok ikonlu olanlar).
3. Config oluştururken **"NAT-PMP (Port Forwarding)"** seçeneğini mutlaka aç — bunu atlarsan port forwarding hiç çalışmaz.
4. İndirilen `.conf` dosyasından `PrivateKey`**WireGuard Private Key**, `Address`'in IPv4 kısmı**WireGuard Addresses** alanına.
5. İstersen **Sunucu Ülkeleri** alanına bir ülke yaz (örn. `Netherlands`), boş bırakırsan rastgele P2P sunucu seçilir.
6. Kur, başlat.
## Kurulumdan SONRA yapman gereken tek manuel adım
qBittorrent WebUI → **Options → Web UI → Authentication****"Bypass authentication for clients on localhost"** kutusunu işaretle, kaydet.
Bu şart, çünkü Gluetun port değiştiğinde qBittorrent'in API'sine `127.0.0.1` üzerinden (aynı ağ namespace'i içinden) istek atıyor — bu kutu işaretli değilse Gluetun'un isteği kimlik doğrulamada takılır, port senkronu sessizce başarısız olur.
## Erişim
```
http://sunucu-ip:61235
```
İlk girişte qBittorrent geçici bir şifre üretir, container loglarından (`docker logs qbittorrent`) görebilirsin.
## Portlar
- **61235** → WebUI (host ve container tarafında aynı numara, tek yayınlanan port)
- Torrent peer portu artık **sabit değil** — ProtonVPN'in NAT-PMP ile dinamik atadığı port, VPN tüneli üzerinden geliyor (host'ta ayrıca port yayınlamaya gerek yok). Gluetun loglarında (`docker logs gluetun | grep -i port`) hangi portun atandığını görebilirsin.
## Sonarr / Radarr entegrasyonu
İndirme istemcisi olarak eklerken host adresi bu sunucu, port **61235**. `/downloads` klasörünü Sonarr/Radarr ile aynı host yoluyla paylaşırsan hardlink taşıma sorunsuz çalışır.
## İleride başka bir şeyi VPN'lemek istersen
Aynı `docker-compose.yml` dosyasına üçüncü bir servis ekleyip ona da `network_mode: "service:gluetun"` yazman yeterli — aynı dosyada oldukları için ekstra container ismi/proje eşleştirmesi gerekmiyor. O servisin ihtiyaç duyduğu portu **gluetun** servisinin `ports:` listesine eklemeyi unutma (ağı gerçekten sahiplenen o olduğu için port yayınlamayı da o yapmak zorunda).
Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

@@ -0,0 +1,58 @@
{
"name": "Lidarr YouTube Downloader",
"id": "lidarr-youtube-downloader",
"available": true,
"short_desc": "Fills in missing Lidarr albums by downloading them from YouTube",
"author": "Angrido",
"port": 5000,
"categories": ["media"],
"description": "Lidarr YouTube Downloader is a free, self-hosted bridge between Lidarr and YouTube. It searches YouTube for albums that Lidarr is missing, scores the best audio match, downloads it at up to 320 kbps using yt-dlp, tags it with full ID3 metadata (MusicBrainz IDs, cover art, track numbers) and imports it back into your Lidarr library. It can also run as a native Lidarr download client (emulating a Newznab indexer + SABnzbd) so Lidarr handles search, grab and import automatically. Includes a scheduler, AcoustID fingerprint verification, and Telegram/Discord notifications.",
"tipi_version": 1,
"version": "1.8.6",
"source": "https://github.com/Angrido/Lidarr-YouTube-Downloader",
"website": "https://github.com/Angrido/Lidarr-YouTube-Downloader",
"exposable": true,
"force_expose": false,
"no_gui": false,
"supported_architectures": ["arm64", "amd64"],
"form_fields": [
{
"type": "text",
"label": "Lidarr URL",
"hint": "Full URL to your Lidarr instance, including port",
"placeholder": "http://192.168.1.10:8686",
"required": true,
"env_variable": "LIDARR_URL"
},
{
"type": "password",
"label": "Lidarr API Key",
"hint": "Found in Lidarr under Settings -> General -> Security",
"required": true,
"env_variable": "LIDARR_API_KEY"
},
{
"type": "text",
"label": "Download folder (host path)",
"hint": "Host path where new tracks are temporarily saved before import, e.g. /mnt/data/Downloads",
"placeholder": "/mnt/data/Downloads",
"required": true,
"env_variable": "DOWNLOAD_HOST_PATH"
},
{
"type": "text",
"label": "Music library folder (host path)",
"hint": "Host path of your Lidarr music library, must match the path Lidarr itself uses",
"placeholder": "/mnt/data/Media/Music",
"required": true,
"env_variable": "MUSIC_HOST_PATH"
},
{
"type": "text",
"label": "Umask",
"default": "002",
"required": false,
"env_variable": "APP_UMASK"
}
]
}
@@ -0,0 +1,24 @@
services:
lidarr-youtube-downloader:
image: angrido/lidarr-downloader:latest
environment:
- LIDARR_URL=${LIDARR_URL}
- LIDARR_API_KEY=${LIDARR_API_KEY}
- DOWNLOAD_PATH=/DATA/Downloads
- LIDARR_PATH=/music
- YT_COOKIES_FILE=/cookies/cookies.txt
- PUID=${UID}
- PGID=${GID}
- UMASK=${APP_UMASK}
- TZ=${TZ}
volumes:
- ${APP_DATA_DIR}/config:/config
- ${APP_DATA_DIR}/cookies:/cookies
- ${DOWNLOAD_HOST_PATH}:/DATA/Downloads
- ${MUSIC_HOST_PATH}:/music
x-runtipi:
is_main: true
internal_port: 5000
x-runtipi:
schema_version: 2
@@ -0,0 +1,21 @@
# Lidarr YouTube Downloader
A free, open-source bridge between [Lidarr](https://lidarr.audio/) and YouTube that fills the gaps in your self-hosted music library. Powered by yt-dlp, MusicBrainz, iTunes and AcoustID, it searches YouTube for your missing albums, scores the best audio match, downloads it at up to 320 kbps, writes complete ID3 metadata with embedded artwork, and triggers a Lidarr import.
## Features
- Smart YouTube matching (title similarity, duration, official-channel boost, forbidden-word filtering)
- Optional AcoustID/chromaprint fingerprint verification before import
- Full ID3 / MP4 tagging with MusicBrainz IDs and iTunes cover art
- Can register inside Lidarr as a native download client (Newznab indexer + SABnzbd emulation) so Lidarr drives search/grab/import itself
- Built-in scheduler for auto-discovery of new missing albums
- Telegram & Discord notifications
- Manual YouTube URL / playlist import with audio preview
## Setup notes
1. After install, open the app and go to **Settings** to fine-tune audio format, concurrency, match threshold, scheduler and notifications.
2. **Lidarr URL** and **Lidarr API key** are required (find the API key in Lidarr → Settings → General → Security).
3. **Download folder** and **Music library folder** must be host paths reachable by both this app and your Lidarr container — ideally the exact same path Lidarr itself uses for its library, to avoid import path mismatches.
4. If YouTube returns "Sign in to confirm you're not a bot", export a `cookies.txt` (Netscape format, throwaway Google account) and drop it into this app's data folder under `cookies/cookies.txt` — it's already mounted and referenced automatically.
5. To use this app as a native Lidarr download client instead of just pushing files in, follow the "Use as a Lidarr download client" section in the [project README](https://github.com/Angrido/Lidarr-YouTube-Downloader#-use-as-a-lidarr-download-client).
**Disclaimer:** provided for personal, educational use to manage your own music library. You are responsible for complying with copyright law and YouTube's Terms of Service.
+53
View File
@@ -0,0 +1,53 @@
{
"name": "Matrix Conduit",
"id": "matrix-conduit",
"available": true,
"short_desc": "Hafif, hizli ve federasyon destekli Matrix homeserver.",
"author": "matrix-conduit",
"port": 8448,
"categories": ["social", "network"],
"description": "Conduit, Rust ile yazilmis, dusuk kaynak tuketen bir Matrix homeserver'dir. Element gibi Matrix istemcileriyle uyumludur ve federasyonu destekler.",
"dynamic_config": true,
"tipi_version": 1,
"version": "0.10.12",
"source": "https://gitlab.com/famedly/conduit",
"website": "https://conduit.rs",
"exposable": true,
"force_expose": true,
"https": true,
"supported_architectures": ["arm64", "amd64"],
"form_fields": [
{
"type": "boolean",
"label": "Kayit acik olsun mu?",
"hint": "Kapali birakip ilk admin hesabini kaydettikten sonra tekrar kapatman onerilir.",
"required": false,
"default": false,
"env_variable": "ALLOW_REGISTRATION"
},
{
"type": "boolean",
"label": "Federasyona izin ver",
"hint": "Diger Matrix sunucularindaki kullanicilarla konusabilmek icin acik olmali.",
"required": false,
"default": true,
"env_variable": "ALLOW_FEDERATION"
},
{
"type": "text",
"label": "Guvenilir sunucular (JSON liste)",
"hint": "Ornek: [\"matrix.org\"]",
"placeholder": "[\"matrix.org\"]",
"required": false,
"default": "[\"matrix.org\"]",
"env_variable": "TRUSTED_SERVERS"
},
{
"type": "number",
"label": "Maksimum istek boyutu (byte)",
"required": false,
"default": 20000000,
"env_variable": "MAX_REQUEST_SIZE"
}
]
}
@@ -0,0 +1,19 @@
server {
listen 80 default_server;
server_name _;
location /.well-known/matrix/server {
default_type application/json;
return 200 '{"m.server": "${APP_DOMAIN}:443"}';
}
location /.well-known/matrix/client {
default_type application/json;
add_header Access-Control-Allow-Origin *;
return 200 '{"m.homeserver": {"base_url": "https://${APP_DOMAIN}"}}';
}
location / {
return 404;
}
}
+60
View File
@@ -0,0 +1,60 @@
services:
matrix-conduit:
image: matrixconduit/matrix-conduit:v0.10.12
restart: unless-stopped
environment:
- CONDUIT_SERVER_NAME=${APP_DOMAIN}
- CONDUIT_DATABASE_PATH=/var/lib/matrix-conduit/
- CONDUIT_DATABASE_BACKEND=rocksdb
- CONDUIT_ADDRESS=0.0.0.0
- CONDUIT_PORT=6167
- CONDUIT_LOG=${LOG:-warn,rocket=off,_=off,sled=off}
- CONDUIT_MAX_REQUEST_SIZE=${MAX_REQUEST_SIZE:-20000000}
- CONDUIT_ALLOW_REGISTRATION=${ALLOW_REGISTRATION:-false}
- CONDUIT_ALLOW_FEDERATION=${ALLOW_FEDERATION:-true}
- CONDUIT_TRUSTED_SERVERS=${TRUSTED_SERVERS:-["matrix.org"]}
- CONDUIT_ALLOW_CHECK_FOR_UPDATES=false
- CONDUIT_TURN_URIS=${TURN_URIS:-["turn:localhost?transport=udp", "turn:localhost?transport=tcp"]}
- CONDUIT_TURN_SECRET=${TURN_SECRET:-turnsecret}
# Bu satir olmadan Conduit diskte config dosyasi aramaya calisir.
- CONDUIT_CONFIG=
volumes:
- ${APP_DATA_DIR}/data:/var/lib/matrix-conduit/
x-runtipi:
is_main: true
internal_port: 6167
matrix-conduit-well-known:
# build: yerine hazir nginx imaji kullaniyoruz; Runtipi app store'lar
# kurulum sirasinda Dockerfile build etmeyi desteklemiyor.
image: nginx:1.27-alpine
restart: unless-stopped
environment:
- APP_DOMAIN=${APP_DOMAIN}
volumes:
# apps/matrix-conduit/data/nginx/default.conf.template dosyasi
# kurulumda otomatik olarak ${APP_DATA_DIR}/data/nginx altina kopyalanir.
- ${APP_DATA_DIR}/data/nginx:/etc/nginx/templates:ro
labels:
# Ana servis disindaki bu container icin Traefik label'larini
# elle yaziyoruz cunku otomatik routing sadece is_main servise uygulanir.
# Container iki agda birden oldugu icin (kendi proje agi + ana ag),
# Traefik'e hangi agi kullanacagini acikca soylememiz gerekiyor.
- "traefik.docker.network=runtipi_tipi_main_network"
- "traefik.enable=true"
- "traefik.http.services.{{RUNTIPI_APP_ID}}-wellknown.loadbalancer.server.port=80"
- "traefik.http.routers.{{RUNTIPI_APP_ID}}-wellknown-insecure.rule=Host(`${APP_DOMAIN}`) && PathPrefix(`/.well-known/matrix`)"
- "traefik.http.routers.{{RUNTIPI_APP_ID}}-wellknown-insecure.entrypoints=web"
- "traefik.http.routers.{{RUNTIPI_APP_ID}}-wellknown-insecure.service={{RUNTIPI_APP_ID}}-wellknown"
- "traefik.http.routers.{{RUNTIPI_APP_ID}}-wellknown-insecure.priority=100"
- "traefik.http.routers.{{RUNTIPI_APP_ID}}-wellknown.rule=Host(`${APP_DOMAIN}`) && PathPrefix(`/.well-known/matrix`)"
- "traefik.http.routers.{{RUNTIPI_APP_ID}}-wellknown.entrypoints=websecure"
- "traefik.http.routers.{{RUNTIPI_APP_ID}}-wellknown.tls.certresolver=myresolver"
- "traefik.http.routers.{{RUNTIPI_APP_ID}}-wellknown.service={{RUNTIPI_APP_ID}}-wellknown"
- "traefik.http.routers.{{RUNTIPI_APP_ID}}-wellknown.priority=100"
x-runtipi:
# Traefik'in bu container'a ulasabilmesi icin ana ag'a katiyoruz.
add_to_main_network: true
x-runtipi:
schema_version: 2
@@ -0,0 +1,16 @@
# Matrix Conduit
Conduit, Rust ile yazılmış hafif ve hızlı bir Matrix homeserver'dır. Düşük
kaynaklı sunucularda (Raspberry Pi dahil) rahatça çalışır ve diğer Matrix
sunucularıyla federasyon kurabilir.
## Kurulum sonrası yapılması gerekenler
1. Uygulamayı kurarken **Expose via domain name (HTTPS)** seçeneğini
kullanman gerekir; Conduit yerel `.tipi.local` alan adıyla düzgün
federe olamaz, gerçek bir domain/subdomain gerekir.
2. DNS'te domainin sunucunun IP adresine işaret ettiğinden emin ol.
3. Kurulumdan sonra `ALLOW_REGISTRATION` seçeneğini geçici olarak açıp ilk
admin hesabını oluştur, sonra tekrar kapat.
4. Federasyon Test Aracı ile (`https://federationtester.matrix.org`)
sunucunun doğru yapılandırıldığını kontrol edebilirsin.
Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB