From b6111740e8432fb24fca07244d5491ab168da539 Mon Sep 17 00:00:00 2001 From: igor Date: Mon, 25 Aug 2025 07:41:03 +0500 Subject: [PATCH] + --- CI_CD/Woodpecker_CI.md | 182 ++++++++---------------- DNS/PowerDNS_install.md | 2 +- Keycloak_install.md | 0 PostgreSQL/PostgreSQL_install.md | 38 +++-- Proxy/Traefik_install.md | 6 +- Proxy/Traefik_plugin.md | 201 ++++++++++++++++++++++++++ Proxy/top.geovizor.traefik_first.md | 209 ++++++++++++++++++++++++++++ RClone/NFS_install.md | 6 + Redis_install.md | 2 +- WireGuard_install.md | 143 +++++++++++++++++++ Woodpecker_CI.md | 74 ---------- 11 files changed, 649 insertions(+), 214 deletions(-) create mode 100644 Keycloak_install.md create mode 100644 Proxy/Traefik_plugin.md create mode 100644 Proxy/top.geovizor.traefik_first.md create mode 100644 WireGuard_install.md delete mode 100644 Woodpecker_CI.md diff --git a/CI_CD/Woodpecker_CI.md b/CI_CD/Woodpecker_CI.md index 851cef0..14b65a9 100644 --- a/CI_CD/Woodpecker_CI.md +++ b/CI_CD/Woodpecker_CI.md @@ -1,153 +1,83 @@ - -# Установка Woodpecker CI на Ubuntu с Gitea - ---- - -## 🛠️ Системные требования - -- Ubuntu 20.04+ (работает и на 22.04) -- Docker и Docker Compose -- Установленный Gitea (можно локально или через Docker) - ---- - -## 📦 Шаг 1: Установка Docker и Docker Compose - -```bash -sudo apt update -sudo apt install -y docker.io docker-compose -sudo systemctl enable docker -sudo usermod -aG docker $USER +```sh +ssh igor@192.168.200.87 -p 22 ``` -> ⚠️ После добавления пользователя в группу `docker` нужно **перелогиниться**, чтобы изменения вступили в силу. - ---- - -## 🧱 Шаг 2: Установка Gitea через Docker Compose - -Создайте директорию `gitea`, и в ней файл `docker-compose.yml`: - -```yaml -version: "3" - -services: - gitea: - image: gitea/gitea:latest - container_name: gitea - restart: always - environment: - - USER_UID=1000 - - USER_GID=1000 - volumes: - - ./gitea:/data - ports: - - "3000:3000" - - "2222:22" +Install +```sh +sudo apt update && +sudo apt upgrade -y && +sudo apt-get install python3-venv python3-pip && +sudo apt install docker.io -y && +sudo apt install -y docker-compose && +sudo systemctl enable docker && +sudo systemctl start docker && +sudo usermod -aG docker $USER && +docker-compose --version ``` -```bash -mkdir gitea && cd gitea -docker-compose up -d + +Create folder for Woodpecker +```sh +sudo mkdir -p /opt/woodpecker && +cd /opt/woodpecker ``` - -Теперь Gitea будет доступна по адресу: [http://localhost:3000](http://localhost:3000) - ---- - -## 🔐 Шаг 3: Настройка Gitea - -1. Перейдите в браузере на `http://localhost:3000` -2. Пройдите установку: - - База данных: SQLite или PostgreSQL (по желанию) - - URL: `http://gitea:3000/` - - Включите регистрацию, если нужно -3. Создайте пользователя (например, `ci-user`) -4. Сгенерируйте **токен доступа** (access token), он будет нужен для Woodpecker - ---- - -## 🚀 Шаг 4: Установка Woodpecker CI - -Создайте директорию `woodpecker`, и в ней файл `docker-compose.yml`: - -```yaml -version: "3" - +```sh +cd /opt/woodpecker +sudo tee docker-compose.yml <<'EOF' services: woodpecker-server: image: woodpeckerci/woodpecker-server:latest - container_name: woodpecker-server restart: always - environment: - - WOODPECKER_OPEN=true - - WOODPECKER_HOST=http://localhost:8000 - - WOODPECKER_GITEA=true - - WOODPECKER_GITEA_URL=http://gitea:3000 - - WOODPECKER_GITEA_CLIENT=your_client_id - - WOODPECKER_GITEA_SECRET=your_client_secret - - WOODPECKER_SECRET=supersecret ports: - - "8000:8000" + - "8000:8000" # Web UI + - "8081:9000" # RPC + environment: + WOODPECKER_OPEN: "true" # Открытый доступ, можно отключить позже + WOODPECKER_HOST: "http://192.168.200.87:8000" + WOODPECKER_GITEA: "true" + WOODPECKER_GITEA_URL: "https://git.mesh.kz" + WOODPECKER_GITEA_CLIENT: "e38fdb9c-2878-4e12-9f9a-f75cc7e7e7e3" + WOODPECKER_GITEA_SECRET: "gto_gapgutecxrghq4sgbv5lrhoht3h5vfgo6ewidf7uxawkn7fhpuma" + WOODPECKER_ADMIN: "your-admin-username" volumes: - - ./data:/var/lib/woodpecker/ - depends_on: - - gitea + - woodpecker-data:/var/lib/woodpecker woodpecker-agent: image: woodpeckerci/woodpecker-agent:latest - container_name: woodpecker-agent restart: always + depends_on: + - woodpecker-server environment: - - WOODPECKER_SERVER=woodpecker-server:9000 - - WOODPECKER_SECRET=supersecret + WOODPECKER_SERVER: "woodpecker-server:9000" + WOODPECKER_SECRET: "supersecret" volumes: - /var/run/docker.sock:/var/run/docker.sock + +volumes: + woodpecker-data: +EOF ``` ---- - -## ⚙️ Шаг 5: Создание OAuth App в Gitea - -1. Перейдите в Gitea → `Settings` → `Applications` -2. Создайте новое приложение (OAuth2) - - Redirect URI: `http://localhost:8000/login` -3. Получите `Client ID` и `Client Secret` -4. Вставьте их в `WOODPECKER_GITEA_CLIENT` и `WOODPECKER_GITEA_SECRET` - ---- - -## ▶️ Шаг 6: Запуск Woodpecker - -```bash -docker-compose up -d +```sh +cd /opt/woodpecker && +sudo docker-compose up -d ``` -После запуска Woodpecker будет доступен по адресу: [http://localhost:8000](http://localhost:8000) - ---- - -## 📁 Пример `.woodpecker.yml` файла - -```yaml -pipeline: - build: - image: node:alpine - commands: - - npm install - - npm test +```sh +cd /opt/woodpecker && +sudo docker-compose down ``` ---- +Open URL in browser +```sh +start http://192.168.200.87:8000 +``` -## ✅ Готово! +Create OAuth2 Application in: +```conf +https://git.mesh.kz/user/settings/applications +https://git.mesh.kz/org/ccalm.org/settings/applications +http://192.168.200.87:8000/authorize +``` -Теперь вы можете подключать репозитории из Gitea и запускать CI-пайплайны в Woodpecker. ---- - -## 🔗 Полезные ссылки - -- Woodpecker CI: https://woodpecker-ci.org/ -- Gitea: https://gitea.io/ -- Документация Woodpecker: https://woodpecker-ci.org/docs/ diff --git a/DNS/PowerDNS_install.md b/DNS/PowerDNS_install.md index df2c00e..79c01c4 100644 --- a/DNS/PowerDNS_install.md +++ b/DNS/PowerDNS_install.md @@ -224,7 +224,7 @@ Minimum = 3600 (1 час) Проверим список зон ```sh sudo pdnsutil list-all-zones && -sudo pdnsutil list-zone geovizor.top +sudo pdnsutil list-zone mesh.kz ``` Проверяем отвечалет ли: ```sh diff --git a/Keycloak_install.md b/Keycloak_install.md new file mode 100644 index 0000000..e69de29 diff --git a/PostgreSQL/PostgreSQL_install.md b/PostgreSQL/PostgreSQL_install.md index ff9d314..3dc5b43 100644 --- a/PostgreSQL/PostgreSQL_install.md +++ b/PostgreSQL/PostgreSQL_install.md @@ -6,7 +6,7 @@ wsl ``` Or coonect to need server: ```sh -ssh igor@ccalm.org -p 2200 +ssh igor@192.168.200.88 -p 22 ``` **************************************************************************************************** @@ -19,7 +19,7 @@ O:\MyDocuments\DataBases\postgresql-10.13-1-windows-x64-binaries\pgsql\bin\initd **************************************************************************************************** Установка PostgreSQL 14 ubuntu 22.04 или 24.04 ```sh - sudo apt-get update + sudo apt-get update && sudo apt-get install postgresql postgresql-contrib -y ``` Или так если нужно установить PostGIS @@ -49,14 +49,19 @@ O:\MyDocuments\DataBases\postgresql-10.13-1-windows-x64-binaries\pgsql\bin\initd Для задания пароля в PostgreSQL выполнить: ```sh sudo -u postgres psql && - \password postgres +``` +можно так поменять но лучьше SQL запросом что ниже +```sql +\password postgres ``` Или так можно поменять пароль через SQL скрипт ```sql ALTER ROLE postgres WITH PASSWORD 'SerTestSecrKey1' VALID UNTIL 'infinity'; ``` Чтобы выйти нужно выпольнить команду: \q - +```sql +\q +``` Роль входа по умолчанию: postgres пароль можно поменять когда в pg_hba.conf установить trust @@ -110,16 +115,26 @@ sudo mcedit /etc/postgresql/16/main/pg_hba.conf Либо с одного конкретного то: host all all 92.46.48.37/24 md5 А также поменять на listen_addresses = '*' в postgresql.conf Потом перезагрузить postgres: - sudo service postgresql restart +```sh + sudo systemctl restart postgresql +``` sudo /etc/init.d/postgresql stop sudo /etc/init.d/postgresql restart sudo /etc/init.d/postgresql start Проверить запущен или нет то: +```sh sudo /etc/init.d/postgresql status +``` Посмотрель лог загрузки PostGreSQL: +```sh dmesg |grep pg +``` Чтобы посмотреть чем занят порт выполнить команду: +```sh + sudo apt-get update && + sudo apt-get install net-tools && sudo netstat -tap | grep 5432 +``` Создать Backup (при переносе со старой на новую версию может быть не совместим для этого нужно делать бакам в текстовом формате: plain): pg_dump --host=192.168.200.17 --username=postgres salevizor > /home/igor/salevizor.sql @@ -183,8 +198,10 @@ sudo mcedit /etc/postgresql/16/main/pg_hba.conf По мотивам: https://www.youtube.com/watch?v=B_yz37CR1XU **************************************************************************************************** Установка pgagent - sudo apt-get update +```sh + sudo apt-get update && sudo apt-get install pgagent +``` Выполнить в консоли запрос: psql -h localhost -U postgres create extension pgagent; @@ -252,6 +269,7 @@ WantedBy=multi-user.target sudo apt install postgresql-12-postgis-2.4 Создать базу данных и выполнть на ней следующие команды: +```sql -- Enable PostGIS (includes raster) CREATE EXTENSION postgis; -- Enable Topology @@ -264,14 +282,15 @@ WantedBy=multi-user.target CREATE EXTENSION address_standardizer_data_us; -- Enable US Tiger Geocoder CREATE EXTENSION postgis_tiger_geocoder; - +``` У меня начало выдавать NOTICE: version "2.2.1" of extension "postgis_topology" is already installed и PostGIS перестал работать на моём PostgreSQL 9.5.17 Аказывается расширение кудато делось установил: sudo apt-get install postgresql-9.5-postgis-2.2 **************************************************************************************************** Для добавления TOTP авторизации в Postgresql выполнить: +```sql CREATE EXTENSION otp; - +``` **************************************************************************************************** sudo apt-get install libpq-dev libpq-fe @@ -353,9 +372,10 @@ open http://localhost:5050 **************************************************************************************************** Балансировщик назрузки и потоковая репликация: + Pgpool-II https://www.youtube.com/watch?v=qpxKlH7DBjU сервер с высокой доступностью https://ritorika.com.ua/dokument/6/pgpool-chto-jeto + **************************************************************************************************** Мониторинг запросов postgresql - diff --git a/Proxy/Traefik_install.md b/Proxy/Traefik_install.md index 913dfac..d72b670 100644 --- a/Proxy/Traefik_install.md +++ b/Proxy/Traefik_install.md @@ -24,7 +24,7 @@ sudo apt install wget Проверь актуальную версию на: [Traefik Releases](https://github.com/traefik/traefik/releases) Пример для версии `v3.0.0`: -```bash +```sh cd ~ && wget https://github.com/traefik/traefik/releases/download/v3.3.4/traefik_v3.3.4_linux_amd64.tar.gz ``` @@ -32,7 +32,7 @@ wget https://github.com/traefik/traefik/releases/download/v3.3.4/traefik_v3.3.4_ --- ## 📥 Шаг 3. Распаковка и установка -```bash +```sh cd ~ && tar -xvzf traefik_v3.3.4_linux_amd64.tar.gz && sudo mv traefik /usr/local/bin/ @@ -67,7 +67,7 @@ entryPoints: websecure: address: ":443" traefik: - address: ":8080" + address: ":8989" api: dashboard: true diff --git a/Proxy/Traefik_plugin.md b/Proxy/Traefik_plugin.md new file mode 100644 index 0000000..e86b999 --- /dev/null +++ b/Proxy/Traefik_plugin.md @@ -0,0 +1,201 @@ +Создание локального плагина для Traefik: Перенос куки jwt_a в заголовок Authorization: Bearer +Этот документ описывает, как создать и настроить локальный плагин для Traefik, который извлекает значение куки jwt_a и устанавливает его в заголовок Authorization: Bearer , аналогично правилу HAProxy: +acl is_jwt_cookie hdr_sub(cookie) jwt_a= +http-request set-header Authorization "Bearer %[cook(jwt_a)]" if is_jwt_cookie + +Плагин будет работать локально без публикации на GitHub. +📋 Требования + +Go: Версия 1.21 или выше. +Traefik: Версия 3.3.4 (или совместимая). +Linux Mint/Ubuntu: ОС, на которой установлен Traefik. +Права доступа: Пользователь с правами на изменение конфигурации Traefik и запуск сервисов. + +📥 Шаг 1: Подготовка окружения + +Проверьте, установлен ли Go: +go version + +Если Go не установлен, установите его: +sudo apt update +sudo apt install golang + + +Убедитесь, что Traefik установлен и работает. Проверьте версию: +traefik version + + + +📂 Шаг 2: Создание плагина + +Создайте директорию для плагина: +mkdir -p ~/traefik-jwt-cookie-plugin +cd ~/traefik-jwt-cookie-plugin + + +Инициализируйте Go-модуль: +go mod init traefik-jwt-cookie-plugin + + +Создайте файл plugin.go с кодом плагина: +package traefik_jwt_cookie_plugin + +import ( + "context" + "net/http" +) + +// Config holds the plugin configuration. +type Config struct { + CookieName string `json:"cookieName"` +} + +// CreateConfig creates and initializes the plugin configuration. +func CreateConfig() *Config { + return &Config{ + CookieName: "jwt_a", // Имя куки по умолчанию + } +} + +// JWTCookiePlugin is the plugin structure. +type JWTCookiePlugin struct { + next http.Handler + name string + cookieName string +} + +// New creates a new instance of the plugin. +func New(_ context.Context, next http.Handler, config *Config, name string) (http.Handler, error) { + return &JWTCookiePlugin{ + next: next, + name: name, + cookieName: config.CookieName, + }, nil +} + +func (p *JWTCookiePlugin) ServeHTTP(rw http.ResponseWriter, req *http.Request) { + // Извлекаем куки + cookie, err := req.Cookie(p.cookieName) + if err == nil && cookie != nil && cookie.Value != "" { + // Устанавливаем заголовок Authorization + req.Header.Set("Authorization", "Bearer "+cookie.Value) + } + // Передаем запрос дальше + p.next.ServeHTTP(rw, req) +} + + +Создайте файл go.mod (создается автоматически при инициализации модуля): +module traefik-jwt-cookie-plugin + +go 1.21 + + +Создайте файл plugin.yaml: +moduleName: traefik-jwt-cookie-plugin +displayName: JWT Cookie to Authorization Header +summary: Middleware to extract a cookie and set it as Authorization Bearer header + + + +⚙️ Шаг 3: Настройка Traefik для локального плагина + +Отредактируйте файл конфигурации Traefik (/etc/traefik/traefik.yml): +experimental: + localPlugins: + jwtCookiePlugin: + moduleName: traefik-jwt-cookie-plugin + sourcePath: /home/igor/traefik-jwt-cookie-plugin # Замените на ваш путь + +http: + routers: + my-router: + rule: "Host(`example.com`)" # Замените на ваш домен + service: my-service + middlewares: + - jwt-cookie-middleware + entryPoints: + - web + + middlewares: + jwt-cookie-middleware: + plugin: + jwtCookiePlugin: + cookieName: "jwt_a" + + services: + my-service: + loadBalancer: + servers: + - url: "http://backend:8080" # Ваш бэкенд-сервис + + +Убедитесь, что путь /home/igor/traefik-jwt-cookie-plugin соответствует вашей директории. Проверьте путь: +echo $HOME + + + +🔒 Шаг 4: Настройка прав доступа +Убедитесь, что Traefik имеет доступ к директории плагина: +sudo chown -R igor:igor ~/traefik-jwt-cookie-plugin +sudo chmod -R 755 ~/traefik-jwt-cookie-plugin + +Если Traefik работает от другого пользователя (например, traefik), выполните: +sudo chown -R traefik:traefik ~/traefik-jwt-cookie-plugin + +🚀 Шаг 5: Запуск Traefik + +Перезапустите Traefik:sudo systemctl restart traefik + + +Если Traefik запущен вручную:traefik --configFile=/etc/traefik/traefik.yml + + + +🧪 Шаг 6: Тестирование + +Включите дебаг-логи в traefik.yml:log: + level: DEBUG + + +Отправьте тестовый запрос с куки jwt_a:curl -H "Host: example.com" -b "jwt_a=your_jwt_token_here" http://192.168.200.85 + + +Проверьте логи Traefik:sudo journalctl -u traefik + +Ищите записи, связанные с jwtCookiePlugin, чтобы подтвердить, что куки обрабатываются. + +🌐 Шаг 7: Интеграция с HAProxy +Поскольку вы используете HAProxy перед Traefik, убедитесь, что HAProxy передает куки без изменений. Если вы хотите перенести логику обработки куки из HAProxy в Traefik, удалите следующее правило из HAProxy: +acl is_jwt_cookie hdr_sub(cookie) jwt_a= +http-request set-header Authorization "Bearer %[cook(jwt_a)]" if is_jwt_cookie + +Обновленная конфигурация HAProxy: +frontend fe_main + bind *:80 + mode http + default_backend be_traefik + +backend be_traefik + mode http + server traefik 192.168.200.85:80 + +⚠️ Возможные проблемы + +Ошибка загрузки плагина: Проверьте логи Traefik (journalctl -u traefik) и убедитесь, что sourcePath указан правильно. +Куки не извлекаются: Убедитесь, что куки jwt_a передаются в запросе (проверьте через curl или браузер). +Go-ошибки: Выполните go mod tidy для установки зависимостей. + +✅ Преимущества + +Работает локально без публикации на GitHub. +Заменяет функциональность HAProxy без внешнего сервиса. +Полная интеграция с Traefik. + +❗ Недостатки + +Требует базовых навыков Go. +Экспериментальная поддержка плагинов в Traefik может быть нестабильной. + +🔄 Альтернатива +Если плагин не работает, оставьте обработку куки в HAProxy, а Traefik используйте только для маршрутизации. Это минимизирует изменения в вашей инфраструктуре. \ No newline at end of file diff --git a/Proxy/top.geovizor.traefik_first.md b/Proxy/top.geovizor.traefik_first.md new file mode 100644 index 0000000..dfe0fa6 --- /dev/null +++ b/Proxy/top.geovizor.traefik_first.md @@ -0,0 +1,209 @@ +Congif to first level proxy + +Connecting to infrascructure +```sh +ssh igor@192.168.200.81 +``` + +```sh +sudo apt update && +sudo apt install wget +``` + +```sh +cd /etc/traefik && +sudo tee /etc/traefik/traefik.yml > /dev/null <<'EOF' +entryPoints: + web: + address: ":80" + websecure: + address: ":443" + http8080: + address: ":8080" + https8443: + address: ":8443" + traefik: + address: ":8989" + +api: + dashboard: true + insecure: true + +log: + level: DEBUG + filePath: "/var/log/traefik/traefik.log" + +accessLog: + filePath: "/var/log/traefik/access.log" + +providers: + file: + filename: "/etc/traefik/dynamic.yml" + watch: true +EOF +``` + + + +```sh +cd /etc/traefik && +sudo tee /etc/traefik/dynamic.yml > /dev/null <<'EOF' +--- +http: + routers: + + dashboard: + rule: "Host(`192.168.200.81`) && Host(`localhost`)" # или другой домен + entryPoints: + - traefik + service: api@internal + middlewares: + - auth + + redirect-to-https: + entryPoints: + - web + rule: "HostRegexp(`{any:.+}`)" + service: noop + middlewares: + - redirect-to-https-middleware + + gotify: + entryPoints: + - websecure + - https8443 + rule: "Host(`gotify.geovizor.top`)" + service: gotify + tls: true + + webdav: + entryPoints: + - websecure + - https8443 + rule: "Host(`webdav.geovizor.top`)" + service: webdav + tls: true + + ccalm-auth: + entryPoints: + - websecure + rule: "Host(`ccalm.test`) && PathPrefix(`/api/authorization/v02`)" + service: ccalm-auth + middlewares: + - strip-api-authorization + tls: true + + ccalm-dbms: + entryPoints: + - websecure + rule: "Host(`ccalm.test`) && PathPrefix(`/api/dbms/v09`)" + service: ccalm-dbms + middlewares: + - strip-api-dbms + tls: true + + ccalm-login: + entryPoints: + - websecure + rule: "Host(`ccalm.test`) && PathPrefix(`/login`)" + service: ccalm-login + tls: true + + ccalm-default: + entryPoints: + - websecure + rule: "Host(`ccalm.test`)" + service: ccalm-default + tls: true + + certbot: + entryPoints: + - websecure + rule: "PathPrefix(`/.well-known/acme-challenge/`)" + service: certbot + tls: true + + middlewares: + + auth: + basicAuth: + users: + - "admin:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/" # admin/admin + + redirect-to-https-middleware: + redirectScheme: + scheme: https + permanent: true + + strip-api-authorization: + replacePathRegex: + regex: ^/api/authorization/v02/(.*) + replacement: /$1 + + strip-api-dbms: + replacePathRegex: + regex: ^/api/dbms/v09/(.*) + replacement: /$1 + + services: + gotify: + loadBalancer: + servers: + - url: "https://192.168.200.84:8080" + passHostHeader: true + healthCheck: + path: "/" + interval: "5s" + serversTransport: insecureTransport + + webdav: + loadBalancer: + servers: + - url: "http://127.0.0.1:8085" + + ccalm-auth: + loadBalancer: + servers: + - url: "https://192.168.200.184:8082" + + ccalm-dbms: + loadBalancer: + servers: + - url: "https://192.168.200.184:8084" + + ccalm-login: + loadBalancer: + servers: + - url: "http://192.168.200.184:3000" + + ccalm-default: + loadBalancer: + servers: + - url: "https://192.168.200.184:8083" + + certbot: + loadBalancer: + servers: + - url: "http://127.0.0.1:9080" + + noop: + loadBalancer: + servers: + - url: "http://0.0.0.0" # placeholder + + # Определяем транспорт для отключения проверки SSL + serversTransports: + insecureTransport: + insecureSkipVerify: true + +EOF +``` + + + +```sh + sudo systemctl daemon-reload && + sudo systemctl enable traefik && + sudo systemctl start traefik && + sudo systemctl status traefik +``` diff --git a/RClone/NFS_install.md b/RClone/NFS_install.md index 6bd5234..8c28f0e 100644 --- a/RClone/NFS_install.md +++ b/RClone/NFS_install.md @@ -54,6 +54,12 @@ sudo mount 192.168.200.80:/mnt/data/org_ccalm_almaty /mnt/nfs-backups 192.168.200.80:/mnt/data/org_ccalm_almaty /mnt/backups nfs defaults 0 0 ``` +On Windows run cmd not PowerShell: +```sh +mount -o anon \\192.168.200.80\mnt\data\org_ccalm_almaty Z: +``` + + Обновляем: ```sh sudo mount -a diff --git a/Redis_install.md b/Redis_install.md index 682ffe5..e0b958f 100644 --- a/Redis_install.md +++ b/Redis_install.md @@ -22,7 +22,7 @@ Config: ``` И меняем в конфигурации на: supervised systemd Также желательно проверить настройку чтобы слушался только IP: 127.0.0.1 -``` +```conf bind 0.0.0.0 ``` Также в поле SECURITY нужно установить пароль, сгенерированный при помощи: diff --git a/WireGuard_install.md b/WireGuard_install.md new file mode 100644 index 0000000..a421ec3 --- /dev/null +++ b/WireGuard_install.md @@ -0,0 +1,143 @@ +Окей 👍 Дам пошаговую инструкцию для **WireGuard** на Ubuntu Server. + + +```sh +ssh ubuntu@194.32.140.11 -p 22 +``` + +Ок 👌 давай сделаем связку **Ubuntu Server (сервер VPN)** ↔ **Windows 11 (клиент)** через **WireGuard**. + +--- + +## 🔧 Установка WireGuard на Ubuntu (сервер) + +1. Установи пакеты: + +```sh +sudo apt update && +sudo apt install wireguard -y +``` + +2. Сгенерируй ключи: + +```sh +umask 077 && +wg genkey | tee server_private.key | wg pubkey > server_public.key +``` + +3. Создай конфиг сервера: + +```sh +sudo mcedit /etc/wireguard/wg0.conf +``` + +Пример (замени `xx.xx.xx.xx` на внешний IP твоего сервера и подсеть на свою): + +```ini +[Interface] +Address = 10.0.0.1/24 +ListenPort = 51820 +PrivateKey = <тот что сгенерился на сервере> +SaveConfig = false + +[Peer] +PublicKey = <тот что бкдкт генерится на клиенте> +AllowedIPs = 10.0.0.2/32 +``` + +4. Разреши форвардинг трафика: + +```sh +sudo mcedit /etc/sysctl.conf +``` + +раскомментируй: + +``` +net.ipv4.ip_forward=1 +``` + +применить: + +```sh +sudo sysctl -p +``` + +5. Настрой firewall (если используешь `ufw`): + +```bash +sudo ufw allow 51820/udp +``` + +6. Запусти WireGuard: + +```sh +sudo systemctl enable wg-quick@wg0 && +sudo systemctl start wg-quick@wg0 +``` + +--- + +## 💻 Установка WireGuard на Windows 11 (клиент) + +1. Скачай официальный клиент: + 👉 [WireGuard для Windows](https://www.wireguard.com/install/) + +2. Установи и запусти WireGuard. + +3. Создай ключи (можно прямо в приложении или на сервере): + +```powershell +# если на сервере: +wg genkey | tee client_private.key | wg pubkey > client_public.key +``` + +4. Добавь конфиг клиента (в приложении "Add Tunnel → Add empty tunnel"): + +```ini +[Interface] +PrivateKey = +Address = 10.0.0.2/32 +DNS = 1.1.1.1 + +[Peer] +PublicKey = +Endpoint = xx.xx.xx.xx:51820 +AllowedIPs = 0.0.0.0/0, ::/0 +PersistentKeepalive = 25 +``` + +⚠️ `xx.xx.xx.xx` → внешний IP твоего Ubuntu сервера. +Если хочешь только доступ к PostgreSQL, можно в `AllowedIPs` указать: + +``` +10.0.0.0/24, ccalm.org/32 +``` + +5. Нажми **Activate** → VPN поднимется. + +--- + +## ✅ Проверка + +На Windows: + +```powershell +ping 10.0.0.1 +``` + +Должен отвечать сервер. + +На Ubuntu: + +```bash +ping 10.0.0.2 +``` + +Должен отвечать клиент. + +После этого JDBC строка будет работать так же, как если бы ты был внутри сети. + +--- + +Хочешь, я соберу сразу готовые **два конфига (`wg0.conf` для сервера и client.conf для Windows)**, чтобы ты только ключи подставил? diff --git a/Woodpecker_CI.md b/Woodpecker_CI.md deleted file mode 100644 index fbd352b..0000000 --- a/Woodpecker_CI.md +++ /dev/null @@ -1,74 +0,0 @@ -```sh -ssh igor@192.168.200.87 -p 22 -``` - -Install -```sh -sudo apt update && -sudo apt install -y docker.io docker-compose && -sudo systemctl enable docker && -sudo systemctl start docker && -sudo usermod -aG docker $USER -``` - -```sh -sudo usermod -aG docker igor -``` - - -Create folder for Woodpecker -```sh -sudo mkdir -p /opt/woodpecker && -cd /opt/woodpecker -``` -```sh -cd /opt/woodpecker -sudo tee docker-compose.yml <<'EOF' -services: - woodpecker-server: - image: woodpeckerci/woodpecker-server:latest - restart: always - ports: - - "8080:8000" # Web UI - - "9000:9000" # RPC - environment: - WOODPECKER_OPEN: "true" # Открытый доступ, можно отключить позже - WOODPECKER_HOST: "http://192.168.200.87:8000" - WOODPECKER_GITEA: "true" - WOODPECKER_GITEA_URL: "https://git.mesh.kz" - WOODPECKER_GITEA_CLIENT: "71a231bf-224c-48e7-ba1e-e9c2d4027c1b" - WOODPECKER_GITEA_SECRET: "gto_dg5ackwr4pq5uxn76lusqvgnhprc76cqtfotkgc5q3kgrtfaqogq" - WOODPECKER_ADMIN: "your-admin-username" - volumes: - - woodpecker-data:/var/lib/woodpecker - - woodpecker-agent: - image: woodpeckerci/woodpecker-agent:latest - restart: always - depends_on: - - woodpecker-server - environment: - WOODPECKER_SERVER: "woodpecker-server:9000" - WOODPECKER_SECRET: "supersecret" - volumes: - - /var/run/docker.sock:/var/run/docker.sock - -volumes: - woodpecker-data: -EOF -``` - -```sh -cd /opt/woodpecker && -sudo docker-compose up -d -``` - -```sh -cd /opt/woodpecker && -sudo docker-compose down -``` - -Open URL in browser -```sh -open http://192.168.200.87:8000 -``` \ No newline at end of file