mirror of
https://github.com/fruworg/fruworg.github.io.git
synced 2025-08-17 22:01:13 +03:00
Compare commits
30 Commits
370f54e777
...
main
Author | SHA1 | Date | |
---|---|---|---|
92917d6ca7 | |||
4d72df5e71 | |||
|
a039f232f6 | ||
de38d86557 | |||
1d129d5cf9 | |||
7407ede13c | |||
a65eea68ce | |||
3363db4134 | |||
fe2503d50f | |||
0a845869e6 | |||
fc9289f189 | |||
1f5caaa1c5 | |||
|
9835a4a713 | ||
ca14e8247c | |||
1f5573cee8 | |||
305f6c5642 | |||
1a3502b71b | |||
26a442d6f4 | |||
cc5fb8a7d7 | |||
72e030fdb4 | |||
e3c801f520 | |||
466d58c3b5 | |||
43e8ca5fb0 | |||
761392c318 | |||
b9c261366e | |||
4efd4854d2 | |||
03233eb2c4 | |||
6e955b75f3 | |||
442b075508 | |||
95d9980f06 |
49
.github/workflows/hugo.yml
vendored
49
.github/workflows/hugo.yml
vendored
@@ -60,52 +60,3 @@ jobs:
|
||||
--gc \
|
||||
--minify \
|
||||
--baseURL "${{ steps.pages.outputs.base_url }}/"
|
||||
- name: Change color
|
||||
run: sed -i 's/peachpuff/rebeccapurple/g' public/css/main.*.css
|
||||
- name: Change URI
|
||||
run: find public -type f -exec sed -i 's/\/\/fruw.org/\/\/fruworg.github.io/g' {} +
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-pages-artifact@v3
|
||||
with:
|
||||
path: ./public
|
||||
|
||||
# Deployment job
|
||||
deploy-page:
|
||||
environment:
|
||||
name: github-pages
|
||||
url: ${{ steps.deployment.outputs.page_url }}
|
||||
runs-on: ubuntu-latest
|
||||
needs: build
|
||||
steps:
|
||||
- name: Deploy to GitHub Pages
|
||||
id: deployment
|
||||
uses: actions/deploy-pages@v4
|
||||
|
||||
deploy-neocities:
|
||||
environment:
|
||||
name: neocities
|
||||
runs-on: ubuntu-latest
|
||||
needs: build
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/download-artifact@v4
|
||||
with:
|
||||
path: .
|
||||
- name: Create directory
|
||||
run: mkdir public
|
||||
- name: Unapacking artifact
|
||||
run: tar xf github-pages/artifact.tar -C public
|
||||
- name: Change URI
|
||||
run: find public -type f -exec sed -i 's/\/\/fruworg.github.io/\/\/fruworg.neocities.org/g' {} +
|
||||
- name: Rename 404 page
|
||||
run: mv public/404.html public/not_found.html
|
||||
- name: Change color
|
||||
run: sed -i 's/rebeccapurple/mediumseagreen/g' public/css/main.*.css
|
||||
- name: Delete id_rsa.pub
|
||||
run: rm public/id_rsa.pub
|
||||
- name: Deploy to Neocities
|
||||
uses: bcomnes/deploy-to-neocities@v1
|
||||
with:
|
||||
api_token: ${{ secrets.NEOCITIES_API_TOKEN }}
|
||||
cleanup: true
|
||||
dist_dir: public
|
||||
|
@@ -1,2 +1,2 @@
|
||||
# Небольшой сайтик на `HUGO`
|
||||
Зеркала: [раз](//fruw.org), [два](//fruworg.neocities.org), [три](//fruworg.pages.dev) и [четыре](//fruworg.github.io).
|
||||
[Yay!](//fruw.org)
|
||||
|
@@ -11,9 +11,9 @@ pygmentscodefencesguesssyntax = true
|
||||
pagination.pagerSize = 4
|
||||
|
||||
[params]
|
||||
description = "всем привет!"
|
||||
description = "гражданин интернета"
|
||||
subtitlefile = true
|
||||
og_image = "fruworg.jpg"
|
||||
og_image = "fruworg.png"
|
||||
|
||||
[[params.social]]
|
||||
name = "mail"
|
||||
|
@@ -36,7 +36,7 @@ init 6
|
||||
## Дошлифовка
|
||||
|
||||
```shell
|
||||
bash -c "$(wget -qLO - https://github.com/community-scripts/ProxmoxVE/raw/main/misc/post-pve-install.sh)"
|
||||
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/pve/post-pve-install.sh)"
|
||||
```
|
||||
|
||||
## Ограничение потребление RAM zfs'ом
|
||||
|
212
content/posts/rknb-marzban-routing.md
Normal file
212
content/posts/rknb-marzban-routing.md
Normal file
@@ -0,0 +1,212 @@
|
||||
---
|
||||
title: Marzban - продвинутый роутинг
|
||||
description: VLESS + gRPC + Reality
|
||||
date: 2025-07-02T12:48:00+02:00
|
||||
tags: [linux, xray]
|
||||
---
|
||||
|
||||
## Вступление
|
||||
|
||||
Для конфигурации нам необходимо два сервера - один будет в России, а второй за её пределами.\
|
||||
Российский сервер будет точкой входа и проксировать траффик через себя до российских сервисов.\
|
||||
До сервисов вне России сервер будет дополнительно проксировать через сервер вне России.\
|
||||
Домен для сервера в России, например - `example.com`, для сервера вне России - `exit.example.com`.
|
||||
|
||||
## Установка Marzban (аналогично для двух серверов)
|
||||
|
||||
Нужно создать папки `tls` и `lib`:
|
||||
```shell
|
||||
mkdir tls
|
||||
mkdir lib
|
||||
```
|
||||
Необходимо переместить `TLS` ключ и сертификат в папку `tls`.\
|
||||
Необходимо создать `compose.yaml`:
|
||||
```python
|
||||
services:
|
||||
marzban:
|
||||
image: gozargah/marzban:latest
|
||||
container_name: marzban
|
||||
network_mode: host
|
||||
restart: always
|
||||
env_file: .env
|
||||
volumes:
|
||||
- ./lib:/var/lib/marzban
|
||||
- ./tls:/tls
|
||||
```
|
||||
|
||||
В файл `.env` нужно вписать следующее:
|
||||
```python
|
||||
UVICORN_HOST = "0.0.0.0"
|
||||
UVICORN_PORT = 8000
|
||||
ALLOWED_ORIGINS=https://<fqdn>
|
||||
SUDO_USERNAME = "admin"
|
||||
SUDO_PASSWORD = "<password>"
|
||||
UVICORN_SSL_CERTFILE = "/tls/<fqdn>.crt"
|
||||
UVICORN_SSL_KEYFILE = "/tls/<fqdn>.key"
|
||||
DASHBOARD_PATH = "/<secret-uri>/"
|
||||
XRAY_JSON = "/var/lib/marzban/xray_config.json"
|
||||
XRAY_SUBSCRIPTION_URL_PREFIX = "https://<fqdn>"
|
||||
```
|
||||
|
||||
Для полученя `xray` ключа и `uuid` для `lib/xray_config.json` необходимо скачать [xray-core](https://github.com/XTLS/Xray-core/releases/).\
|
||||
`uuid` - `./xray uuid`\
|
||||
`key` - `./xray x25519`\
|
||||
Далее нужно создать файл `lib/xray_config.json` (`fqdn` у каждого сервера свой):
|
||||
```python
|
||||
{
|
||||
"log": {
|
||||
"loglevel": "debug"
|
||||
},
|
||||
"dns": {
|
||||
"servers": [
|
||||
"9.9.9.9",
|
||||
"149.112.112.112",
|
||||
"2620:fe::fe",
|
||||
"2620:fe::9"
|
||||
],
|
||||
"queryStrategy": "UseIP",
|
||||
"tag": "dns_inbound"
|
||||
},
|
||||
"routing": {
|
||||
"rules": [
|
||||
{
|
||||
"ip": [
|
||||
"geoip:private"
|
||||
],
|
||||
"outboundTag": "BLOCK",
|
||||
"type": "field"
|
||||
},
|
||||
{
|
||||
"type": "field",
|
||||
"outboundTag": "BLOCK",
|
||||
"protocol": [
|
||||
"bittorrent"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"inbounds": [
|
||||
{
|
||||
"tag": "VLESS GRPC REALITY",
|
||||
"listen": "0.0.0.0",
|
||||
"port": 8443,
|
||||
"protocol": "vless",
|
||||
"settings": {
|
||||
"clients": [],
|
||||
"decryption": "none"
|
||||
},
|
||||
"streamSettings": {
|
||||
"network": "grpc",
|
||||
"grpcSettings": {
|
||||
"serviceName": "xyz"
|
||||
},
|
||||
"security": "reality",
|
||||
"realitySettings": {
|
||||
"show": false,
|
||||
"dest": "google.com:443",
|
||||
"xver": 0,
|
||||
"serverNames": [
|
||||
"<fqdn>"
|
||||
],
|
||||
"privateKey": "<xray-private-key>",
|
||||
"SpiderX": "/<uuid>",
|
||||
"shortIds": [
|
||||
"<16-hexadecimal-characters>"
|
||||
]
|
||||
}
|
||||
},
|
||||
"sniffing": {
|
||||
"enabled": true,
|
||||
"destOverride": [
|
||||
"http",
|
||||
"tls",
|
||||
"quic"
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"outbounds": [
|
||||
{
|
||||
"protocol": "freedom",
|
||||
"tag": "DIRECT"
|
||||
},
|
||||
{
|
||||
"protocol": "blackhole",
|
||||
"tag": "BLOCK"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
И, наконец, необходимо поднять контейнер:
|
||||
|
||||
```shell
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
## Создание клиентов
|
||||
|
||||
Далее необходимо создать пользователей для конечных пользователей на российском сервере
|
||||
и пользователя на сервере вне России для российского сервера.
|
||||
Далее приложением `v2rayNG` подключаемся на сервер вне России и экспортируйте конфиг -
|
||||
`Экспорт всей конфигурации в буфер обмена`.
|
||||
|
||||
## Модификация роутинга
|
||||
|
||||
Далее только на российском сервере необходимо в `xray_config.json` изменить `routing` на:
|
||||
|
||||
```python
|
||||
"routing": {
|
||||
"rules": [
|
||||
{
|
||||
"domain": [
|
||||
"regexp:\\.ru$",
|
||||
"regexp:\\.\u0440\u0444$"
|
||||
],
|
||||
"outboundTag": "RU",
|
||||
"type": "field"
|
||||
},
|
||||
{
|
||||
"ip": [
|
||||
"geoip:ru"
|
||||
],
|
||||
"outboundTag": "RU",
|
||||
"type": "field"
|
||||
},
|
||||
{
|
||||
"ip": [
|
||||
"geoip:private"
|
||||
],
|
||||
"outboundTag": "BLOCK",
|
||||
"type": "field"
|
||||
},
|
||||
{
|
||||
"type": "field",
|
||||
"outboundTag": "BLOCK",
|
||||
"protocol": [
|
||||
"bittorrent"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
И также только на российском сервере изменить `outbounds` на\
|
||||
(вместо `<proxy>` необходимо вставить `outbound` с тегом `proxy` из экспортированного
|
||||
конфига `v2rayNG` и заменить тег `proxy` на `DIRECT`):
|
||||
```python
|
||||
"outbounds": [
|
||||
<proxy>
|
||||
{
|
||||
"protocol": "freedom",
|
||||
"tag": "RU"
|
||||
},
|
||||
{
|
||||
"protocol": "blackhole",
|
||||
"tag": "BLOCK"
|
||||
}
|
||||
]
|
||||
|
||||
```
|
||||
|
||||
Готово, теперь пользователи могут подключаться к серверу в России.
|
@@ -1,7 +1,7 @@
|
||||
<pre><ascii> ▄ .▄▄▄▄ .▄▄▌ ▄▄▌ there
|
||||
██▪▐█▀▄.▀·██• ██• ▪
|
||||
██▀▐█▐▀▀▪▄██▪ ██▪ ▄█▀▄
|
||||
██▌▐▀▐█▄▄▌▐█▌▐▌▐█▌▐▌▐█▌.▐▌
|
||||
██▌▐▀▐█▄▄▌▐█▌▐▌▐█▌▐▌▐█▌•▐▌
|
||||
▀▀▀ · ▀▀▀ .▀▀▀ .▀▀▀ ▀█▄▀▪</ascii>
|
||||
|
||||
<a href="//github.com/fruworg/fruworg.github.io">opensource, js&cookie free</a></pre>
|
||||
<a href="//github.com/fruworg/fruw.org">opensource, js&cookie free</a></pre>
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 87 KiB After Width: | Height: | Size: 401 KiB |
Binary file not shown.
Before Width: | Height: | Size: 764 KiB |
BIN
static/fruworg.png
Normal file
BIN
static/fruworg.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 969 KiB |
1
static/id_ed25519.pub
Normal file
1
static/id_ed25519.pub
Normal file
@@ -0,0 +1 @@
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID6p+XXyq5KchR3BxqKMRXinGN1WawNmWHfvS6H/fWMy im@fruw.org
|
BIN
static/rknb.png
Normal file
BIN
static/rknb.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 MiB |
Submodule themes/themu updated: 257284dd68...fd50a946d0
Reference in New Issue
Block a user