Compare commits

..

243 Commits

Author SHA1 Message Date
TheSt1tch 7cde0d8820 update docker version 1 week ago
TheSt1tch 93fd9a5778 add oidc-login 1 week ago
TheSt1tch 5fe604ff0b clean canonical "q" 1 week ago
TheSt1tch d1e527ac6e add picture
continuous-integration/drone/push Build is passing Details
2 months ago
TheSt1tch d257ecaca3 add btop
continuous-integration/drone/push Build is passing Details
2 months ago
TheSt1tch cb2b67b4ed add wirenboard
continuous-integration/drone/push Build is passing Details
2 months ago
TheSt1tch 297f2b9886 add change-id
continuous-integration/drone/push Build is passing Details
2 months ago
TheSt1tch 619e692280 add google analytics
continuous-integration/drone/push Build is passing Details
3 months ago
TheSt1tch 2b36b12528 add mariadb
continuous-integration/drone/push Build is passing Details
4 months ago
TheSt1tch e8998d8d0e проблемы призмы
continuous-integration/drone/push Build is passing Details
4 months ago
TheSt1tch de8735039d fix
continuous-integration/drone/push Build is passing Details
5 months ago
TheSt1tch 634a37a594 add disk vm
continuous-integration/drone/push Build is passing Details
5 months ago
TheSt1tch d999b77188 fix page
continuous-integration/drone/push Build is passing Details
5 months ago
TheSt1tch 193087ba7a add secure linux 5 months ago
TheSt1tch 9d0bff8ea1 add helpfull links 5 months ago
TheSt1tch b990a80182 fix
continuous-integration/drone/push Build is passing Details
5 months ago
TheSt1tch 06bdcf1237 fix
continuous-integration/drone/push Build is passing Details
5 months ago
TheSt1tch 24619b7a1b add disable apparmor
continuous-integration/drone/push Build is passing Details
5 months ago
TheSt1tch 30b154c8ec add locale russian
continuous-integration/drone/push Build is passing Details
5 months ago
TheSt1tch bbb783228e fix
continuous-integration/drone/push Build is passing Details
5 months ago
TheSt1tch 3bd9e53841 update
continuous-integration/drone/push Build is passing Details
5 months ago
thest1tch 715627d6b8 Merge pull request 'states/2024.07' (#18) from states/2024.07 into main
Reviewed-on: #18
5 months ago
TheSt1tch 5d90e07d15 add dockge 5 months ago
TheSt1tch b1d0f3fb64 remove page 5 months ago
TheSt1tch 1b830e48cd add mark traffik page 5 months ago
TheSt1tch 6ee61a110e add ebgp page 5 months ago
TheSt1tch 99f75d82e2 update 5 months ago
thest1tch dd13eb9833 Merge pull request 'states/2024.06' (#17) from states/2024.06 into main
continuous-integration/drone/push Build is passing Details
Reviewed-on: #17
7 months ago
TheSt1tch a1edb4ea4b add woodpacker ci file
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/pr Build is passing Details
7 months ago
TheSt1tch 3c2e3e7790 Со мной связался РКН и пригрозил 7 months ago
thest1tch 35795a1e08 Merge pull request 'Страницы за 2024.05' (#16) from states/2024.05 into main
Reviewed-on: #16
8 months ago
TheSt1tch 95cdfb078f add rsync 8 months ago
thest1tch c9e604d7e4 Merge pull request 'states/2024.04' (#15) from states/2024.04 into main
continuous-integration/drone/push Build is passing Details
Reviewed-on: #15
9 months ago
TheSt1tch 9e1500a70a 1
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/pr Build is passing Details
9 months ago
TheSt1tch a79543fe20 update
continuous-integration/drone/push Build is passing Details
9 months ago
TheSt1tch 2283f15cc5 Настройка новых устройств по Nodbus шине
continuous-integration/drone/push Build is passing Details
9 months ago
TheSt1tch 382deed6cf Новая страница решения проблем с Plex 9 months ago
TheSt1tch a7870fb348 Ползеные команды перенесены на отдельную страницу 9 months ago
TheSt1tch a3b590af57 Обновление версии в инструкции 9 months ago
TheSt1tch 4fe1c4478f fix
continuous-integration/drone/push Build is passing Details
9 months ago
TheSt1tch 700091c351 Добавлена статья по входу в Synology через SSO
continuous-integration/drone/push Build is passing Details
9 months ago
TheSt1tch 9ca6b107ab Обновление Traefik install
continuous-integration/drone/push Build is passing Details
9 months ago
TheSt1tch bc5925c5c4 Добавление страницы по Synology для обновления корневых сертификатов
continuous-integration/drone/push Build is passing Details
9 months ago
TheSt1tch 9a344d9521 fix WARNING
continuous-integration/drone/push Build is passing Details
9 months ago
TheSt1tch a1f679a1f1 fix
continuous-integration/drone/push Build is passing Details
9 months ago
TheSt1tch 298b8fbd40 test
continuous-integration/drone/push Build is passing Details
9 months ago
TheSt1tch 119386dcdb fix WARNING
continuous-integration/drone/push Build is passing Details
9 months ago
TheSt1tch 229b866064 update nav
continuous-integration/drone/push Build is passing Details
9 months ago
TheSt1tch 3fb2be97f0 Новая структура (перенос hardware на верхний уровень)
continuous-integration/drone/push Build is passing Details
9 months ago
TheSt1tch 521586e758 add dev mkdocs
continuous-integration/drone/push Build is passing Details
9 months ago
TheSt1tch 3e00c57072 add homarr and homepage
continuous-integration/drone/push Build is passing Details
10 months ago
TheSt1tch 017d45ade6 update pictshare page
continuous-integration/drone/push Build is passing Details
10 months ago
TheSt1tch af887bae7d fix
continuous-integration/drone/push Build is passing Details
10 months ago
TheSt1tch 11e91bc977 1
continuous-integration/drone/push Build is passing Details
10 months ago
TheSt1tch 132671e490 ?
continuous-integration/drone/push Build is failing Details
10 months ago
TheSt1tch 31eb002e95 Merge branch 'main' of https://git.st1t.ru/thest1tch/docs
continuous-integration/drone/push Build is passing Details
10 months ago
TheSt1tch 2a8496efe7 Merge branch 'states/2024.01' 10 months ago
TheSt1tch 678c83bd4b remove build main
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/pr Build is passing Details
10 months ago
TheSt1tch 3651fe2d47 add
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/pr Build is failing Details
10 months ago
TheSt1tch 0c8be9f9a3 add examples
continuous-integration/drone/push Build is passing Details
10 months ago
TheSt1tch 16d5b6f104 update drone ci
continuous-integration/drone/push Build is passing Details
10 months ago
TheSt1tch 0711a24883 add
continuous-integration/drone/push Build is passing Details
10 months ago
TheSt1tch 4a04b3d4da add jacket and prowlarr
continuous-integration/drone/push Build is passing Details
10 months ago
TheSt1tch 920c24b1dc move from blog
continuous-integration/drone/push Build is passing Details
10 months ago
TheSt1tch 74d400c6a5 update modlist
continuous-integration/drone/push Build is passing Details
10 months ago
TheSt1tch 602d02ad91 fix
continuous-integration/drone/push Build is passing Details
11 months ago
TheSt1tch 4bff243739 update
continuous-integration/drone/push Build is passing Details
11 months ago
TheSt1tch 06c076d651 fix line number code
continuous-integration/drone/push Build is passing Details
11 months ago
TheSt1tch 2e35a35eb9 add Proxmox LXC Nvidia
continuous-integration/drone/push Build is passing Details
11 months ago
TheSt1tch fb15f3b2ec add plex
continuous-integration/drone/push Build is passing Details
11 months ago
TheSt1tch 2915ea31ca смена пути
continuous-integration/drone/push Build is passing Details
11 months ago
TheSt1tch b0f8159608 add plex pages
continuous-integration/drone/push Build is passing Details
11 months ago
TheSt1tch 6368802cd0 add jackett.md
continuous-integration/drone/push Build is passing Details
11 months ago
TheSt1tch 6a66859ad9 fixed
continuous-integration/drone/push Build is passing Details
11 months ago
TheSt1tch b5f0c9080f fix path
continuous-integration/drone/push Build is passing Details
11 months ago
TheSt1tch f9d2c49899 update and fixes
continuous-integration/drone/push Build is passing Details
11 months ago
TheSt1tch e81e358ffb update
continuous-integration/drone/push Build is passing Details
12 months ago
TheSt1tch a0693d8502 add ark se server yml
continuous-integration/drone/push Build is passing Details
12 months ago
TheSt1tch cc4d5ce811 fix
continuous-integration/drone/push Build is passing Details
12 months ago
TheSt1tch 00efd1c84b update
continuous-integration/drone/push Build is passing Details
12 months ago
TheSt1tch b5e439a951 rename docker to install
continuous-integration/drone/push Build is passing Details
12 months ago
TheSt1tch a0d03037fd fix
continuous-integration/drone/push Build is passing Details
12 months ago
TheSt1tch 1a60ff8e97 fixes
continuous-integration/drone/push Build is passing Details
12 months ago
TheSt1tch 047f4ea54a fix profiles docker compose
continuous-integration/drone/push Build is passing Details
12 months ago
TheSt1tch 0f576bee1d add Syncthing
continuous-integration/drone/push Build is passing Details
1 year ago
TheSt1tch 70f9c99926 исправление структуры
continuous-integration/drone/push Build is passing Details
1 year ago
TheSt1tch 053d69c8b2 обновление структуры
continuous-integration/drone/push Build is passing Details
1 year ago
TheSt1tch 0d18201b5e fix m
continuous-integration/drone/push Build is passing Details
1 year ago
TheSt1tch 0f4c7589a0 переработал страницу по traefik forward auth
continuous-integration/drone/push Build is passing Details
1 year ago
TheSt1tch b295d7b1b6 update
continuous-integration/drone/push Build is passing Details
1 year ago
TheSt1tch ae9f581b96 добавил установку hass на debian
continuous-integration/drone/push Build is passing Details
1 year ago
TheSt1tch 5de11dacd2 фикс отображения
continuous-integration/drone/push Build is passing Details
1 year ago
TheSt1tch a5737485f8 добавил настройку футера
continuous-integration/drone/push Build is passing Details
1 year ago
TheSt1tch 5d998fc2d3 фикс статьи
continuous-integration/drone/push Build is passing Details
1 year ago
TheSt1tch 1882948bbf добавил статьи
continuous-integration/drone/push Build is passing Details
1 year ago
TheSt1tch e2ed143d39 обновил структуру страниц в Docker - по алфавиту
continuous-integration/drone/push Build is passing Details
1 year ago
TheSt1tch a8fd8b2a76 update name docker socket proxy
continuous-integration/drone/push Build is passing Details
1 year ago
TheSt1tch f4a6ab8a46 add docker socket proxy
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch e4fb1f9a06 Merge pull request 'states/2023.12' (#10) from states/2023.12 into main
continuous-integration/drone/push Build is passing Details
Reviewed-on: #10
1 year ago
TheSt1tch a6b6039cdf fix name
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/pr Build is passing Details
1 year ago
TheSt1tch 0ace8c084c fix
continuous-integration/drone/push Build is passing Details
1 year ago
TheSt1tch fb1e8ecccb add upgrade dist
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 8c96199b10 Merge pull request 'states/03' (#9) from states/03 into main
continuous-integration/drone/push Build is passing Details
Reviewed-on: #9
1 year ago
TheSt1tch d6871dcb5f remove auto color
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/pr Build is passing Details
1 year ago
TheSt1tch d5d9121aef fix
continuous-integration/drone/push Build is passing Details
1 year ago
TheSt1tch 584ac2fc52 update
continuous-integration/drone/push Build is passing Details
1 year ago
TheSt1tch 8d87b84928 add path of exile links
continuous-integration/drone/push Build is passing Details
1 year ago
TheSt1tch 01abc2a930 add update-time powershell 1 year ago
TheSt1tch 7d9eeed3a9 update resize-part.md
continuous-integration/drone/push Build is passing Details
1 year ago
TheSt1tch 87ca233863 update
continuous-integration/drone/push Build is passing Details
1 year ago
TheSt1tch e41a304784 add vscode asking git
continuous-integration/drone/push Build is passing Details
1 year ago
TheSt1tch 318700db6b fix
continuous-integration/drone/push Build is passing Details
1 year ago
TheSt1tch 024ebfee7e update
continuous-integration/drone/push Build is passing Details
1 year ago
TheSt1tch 5b2855586c upd
continuous-integration/drone/push Build is passing Details
1 year ago
TheSt1tch 9dae95f7ce add factorio
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch cf23d926b4 add prints factorio
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 9d99a4409a fix
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 131c1f172b 1
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 297739f4fc 1 1 year ago
thest1tch f08da01175 Merge pull request 'states/02' (#8) from states/02 into main
continuous-integration/drone/push Build is passing Details
Reviewed-on: #8
1 year ago
thest1tch f8ecfed989 Merge branch 'main' into states/02
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 3e3aaa929e add payday 2 hud
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/pr Build is passing Details
1 year ago
thest1tch a0349dfc47 update badge
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 72376b558e update docker agent
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 859368a963 fix
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 048d39de95 update
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch d535ab144e fix proxmox index
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 2a20e5f04e fix waring
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 26c9ac8168 update hass
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 49e9b9bc63 add hass time trigger
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch ba3b46d332 fix slug
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 3c95ff7446 fix url
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch ead0d0004e test
continuous-integration/drone/push Build is failing Details
1 year ago
thest1tch a3393cf935 update blog
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch acefa757b3 update
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 10ce2d322c blog edit
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch f6eba9ba55 update blog
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 9232611f01 fix
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 591f5263e8 update mkdocs.yml
continuous-integration/drone/push Build is failing Details
1 year ago
thest1tch 91987fdb7a update blogs
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 86b2daa235 fix blog
continuous-integration/drone/push Build is failing Details
1 year ago
thest1tch 2b13eab659 update version 9.4.6
continuous-integration/drone/push Build is failing Details
1 year ago
thest1tch a50c333a91 fix
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch aaf46d18cd add hp
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 9e4466303e update
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 06344acc72 fix
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 383af3f340 update
continuous-integration/drone/push Build is failing Details
1 year ago
thest1tch b02c3cff5c plex-mm add links
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch e7ebf9975f add pmm:status
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 40f42491de fix "
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch c5624001ec update
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 40b514c86a fix
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 563600052a fix
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 77e4b65d7b fix
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 308c22388a update plex-mm
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 4af763b2e4 update proxmox index file
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 1c59a578fc update scripts
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 24924d3150 fix
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch ff531b9ad1 update
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 2f0becf5a3 update
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 0be08cfbc3 update image
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch f6d53bd8f0 update
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 5f0a24418c fix
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 2004b2ea55 add zigbee2mqtt
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch dbea0057c4 fix
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch a995d247b9 update
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 3892467571 update
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 67eee3633b add chrome
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch db3c88e487 add style github for table
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 93d508794b fix
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch c5745bee02 add docker compose healthcheck and profile
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 528ed9ec30 ctop - update github links
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 6da0ee0a43 fix ctop
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch a0e8e45a39 update ctop
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch cfc10ff706 add ctop
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch ad546ac2fb add nextcloud data problem
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 1162393693 update
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 614d812fc0 add self-hosted
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch ada20d3990 fix homarr
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch abe5c2ab79 add homarr
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 905b01f013 fix nextcloud
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch cdf7235dae fix
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 47c2e9a206 fix picture
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 86ffa0dcce add pictshare to mkdocs
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch c980e7d310 add pictshare
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 1a22627bca fix
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch cf3b44066d add traefik error-pages
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 88a55dba35 add traefik tcp route
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 638e710820 update
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 21b0732740 fix name
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch 79478ccc6c add handbrake and bgp
continuous-integration/drone/push Build is passing Details
1 year ago
thest1tch bbbb018b47 ncdu fix
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch a564a20a38 add ncdu
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 9f94404788 update drone
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch c821ca0b20 fix
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 253a7ac2c1 update gitea
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 0c8507ab22 add drone and gitea
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 1c985099d3 add gitea
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch c3f11e9bf9 add nextcloud cron
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 48431c9833 fix
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 4caf2ce01a Перемещение Ubuntu в свою секцию 2 years ago
thest1tch c22943e513 add redis ubuntu 2 years ago
thest1tch 0f53c0f1ba add new docker
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch d0e7d77fcc update
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 4f2be8bf64 add wikijs 2 years ago
thest1tch 777547b910 add new pages
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch d26292cda4 add db 2 years ago
thest1tch 8fa1630b38 add hass 2 years ago
thest1tch c8f54e4dd5 add network 2 years ago
thest1tch 6c0b808835 add windows 2 years ago
thest1tch 7666170c8f add mikrotik 2 years ago
thest1tch 36c07e3514 add blog 2 years ago
thest1tch ebf65fd476 add new pages
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch aac9d4799e add ubuntu 2 years ago
thest1tch bcecd80874 add windows 2 years ago
thest1tch 711a411d69 add blog 2 years ago
thest1tch 5be099c193 add hass 2 years ago
thest1tch 4cceba2a43 add ubuntu pages
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 90d80f9119 new pages blog
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 2a5603d45b move ubuntu to software section
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 54c1bd108d update powershell
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 802fd06329 add powershell
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 47f2ea38e6 update ubuntu bash alias
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch f404726a4e move ubuntu page
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch cffbaf43fb fix missing page
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 6cd38fcee2 update
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 53e8bf81e1 test?
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 9733452312 fix overrides
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 8aedffe163 update drone v2
continuous-integration/drone/push Build is failing Details
2 years ago
thest1tch 6adab5270e update drone ci
continuous-integration/drone/push Build encountered an error Details
2 years ago
thest1tch cec7679d40 + аналитика гугл и яндекс
continuous-integration/drone/push Build is failing Details
2 years ago
thest1tch 3db6c74b05 update blogs
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 0d95992335 add new blog pages
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 07529252f7 update plex section
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 32bf2f9c85 update tsd section
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch da2659eff4 update expand menu
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch d62fedd24c add tsd pages
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch dddee3cc91 update troubleshooting
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch e49a6b7789 add troubleshooting
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 8bd0d38382 move hp-ilo to blog
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 4c4c33bd90 add hp-ilo page
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch f0cc4ecee1 Merge pull request 'add tg to index.md' (#7) from states/01 into main
continuous-integration/drone/push Build is passing Details
Reviewed-on: #7
2 years ago
thest1tch 065af3abac Merge pull request 'states/01' (#6) from states/01 into main
continuous-integration/drone/push Build is passing Details
Reviewed-on: #6
2 years ago

@ -4,14 +4,13 @@ type: docker
name: build-home-docs name: build-home-docs
steps: steps:
- name: check-feature - name: build main
image: squidfunk/mkdocs-material:9.1.17 image: git.st1t.ru/thest1tch/mkdocs-material:latest
pull: if-not-exists pull: if-not-exists
volumes: volumes:
- name: site - name: site-st1tru
path: /site path: /site
commands: commands:
- pip install -U -r ./requirements.txt
- mkdocs build - mkdocs build
- cp -r site/ /site - cp -r site/ /site
- chown 1000:1000 /site - chown 1000:1000 /site
@ -20,42 +19,29 @@ steps:
event: event:
- push - push
branch: branch:
- states/* - main
- name: telgram_notify - name: build states
image: appleboy/drone-telegram image: git.st1t.ru/thest1tch/mkdocs-material:latest
pull: if-not-exists
volumes:
- name: site-dev
path: /site
commands:
- mkdocs build
- cp -r site/ /site
- chown 1000:1000 /site
- chmod -R 777 /site
when: when:
status: event:
#- success - push
- failure branch:
settings: - states/*
# The secrets below can be entered from the Drone UI for this repo
token:
from_secret: telegram_token
to:
from_secret: telegram_chat_id
format: markdown
message: >
{{#success build.status}}
✅ Build #{{build.number}} of `{{repo.name}}` succeeded.
📝 Commit by {{commit.author}} on `{{commit.branch}}`:
```
{{commit.message}}
```
🌐 {{ build.link }}
{{else}}
❌ Build #{{build.number}} of `{{repo.name}}` failed.
📝 Commit by {{commit.author}} on `{{commit.branch}}`:
```
{{commit.message}}
```
🌐 {{ build.link }}
{{/success}}
volumes: volumes:
- name: site
host:
path: /opt/appdata/mkdocswiki
- name: site-st1tru - name: site-st1tru
host: host:
path: /opt/appdata/nginx/st1t.ru path: /opt/appdata/nginx/st1t.ru
- name: site-dev
host:
path: /opt/appdata/nginx/dev.thest1tch.ru

@ -0,0 +1,18 @@
# docker pull squidfunk/mkdocs-material:latest
# docker build -t git.st1t.ru/thest1tch/mkdocs-material:latest -t git.st1t.ru/thest1tch/mkdocs-material:latest .
# docker push git.st1t.ru/thest1tch/mkdocs-material:latest
FROM squidfunk/mkdocs-material:latest
RUN apk add --no-cache py3-pip py3-pillow py3-cffi py3-brotli gcc musl-dev python3-dev pango build-base libffi-dev jpeg-dev libxslt-dev pngquant py3-cairosvg
RUN pip install \
mkdocs-material \
mkdocs-material-extensions>=1.1 \
mkdocs-minify-plugin>=0.2 \
mkdocs-git-revision-date-plugin==0.3.1 \
pymdown-extensions>=9.9.1 \
mkdocs-git-revision-date-localized-plugin \
mkdocs-glightbox \
mkdocs-blogging-plugin \
livereload

@ -1,3 +1 @@
# Blogs # Блог
{{ blog_content }}

@ -0,0 +1,69 @@
---
draft: true
date: 2023-10-17
categories:
- "ark: se"
- games
- игры
- игровые сервера
---
## RCON Tools
[ARK RCON tool ACCIon](https://survivetheark.com/index.php?/forums/topic/255792-ark-rcon-tool-accion/&)
## Console Commands
[список](https://ark.fandom.com/wiki/Console_commands)
## Генераторы конфигов
[https://ini.arkforum.de/](https://ini.arkforum.de/)
[Dino Spawn Configuration Tool](http://www.gamewalkthrough-universe.com/Walkthroughs-Guides/Ark-Survival-Evolved/Game-Server-Customization/Dino-Spawn/default.aspx)
---
## Файлы конфигурации
Большинство параметров сервера нужно указывать в двух файлах конфигурации `GameUserSettings.ini` и `Game.ini`.
**Прежде чем вносить изменения в данные файлы, сервер нужно отключить**.
Расположение файлов конфигурации на FTP:
| Файл Конфигурации | Место нахождения |
| --- | --- |
| GameUserSettings.ini | ShooterGame/Saved/Config/LinuxServer/ |
| Game.ini | ShooterGame/Saved/Config/LinuxServer/ |
В файле `GameUserSettings.ini` содержатся параметры, как для клиента игры, так и для игрового сервера. Параметры клиента игры сервером не используются. Параметры сервера указаны в разделе под названием `[ServerSettings]`.
Файл `Game.ini` используется для более продвинутых модификаций - отключение каких либо энграмм, какое количество XP игрок будет получать за новый уровень, отключение специфического контента или изменение баланса в зависимости от предпочтений игроков.
Изначально Game.ini чист, параметры в него нужно будет вписывать в ручную. Для начала вписываем раздел `[/script/shootergame.shootergamemode]`, только после этого указываем параметр.
Пример:
```
[/script/shootergame.shootergamemode]
MatingIntervalMultiplie=1.0
```
Все параметры в файлах `GameUserSettings.ini` и `Game.ini` нужно обязательно указывать со значением. Если параметр не указан в конфигурационном файле, его значение автоматически используется по умолчанию.
После команды обязательно ставьте символ `=` только потом значение
Пример:
```
ServerCrosshair=True
AllowThirdPersonPlayer=True
MapPlayerLocation=True
MaxStructuresInRange=100
```
**Важное замечание по значениям параметров**
```plaintext
False - ложь\отключить
True - правда\включить
```

@ -0,0 +1,28 @@
---
draft: true
date: 2023-10-17
tags:
- "ark: se"
- games
- игры
---
[Локации на карте Fjordur](https://docs.google.com/spreadsheets/d/13Hov6IQNBorso8WqY0kkT72e4iISr192vkGbIMHVQWk/edit?usp=sharing)
[Карта](https://ark.fandom.com/wiki/Mod:Fjordur/Explorer\Map)
[Auction House команды админа](https://linode.ghazlawl.com/auction-house/admin-commands/)
[Конфигурация сервера](https://ark.fandom.com/wiki/Server_configuration#Command_line_arguments)
[Structures Plus](https://steamcommunity.com/sharedfiles/filedetails/?id=2184441067)
[Console Commands](https://ark.fandom.com/wiki/Console_commands)
[Spawn codes for Castles, Keeps, and Forts Remastered](https://usebeacon.app/mods/1814953878/spawncodes)
[Linux Server Tools](https://github.com/arkmanager/ark-server-tools#commands-acting-on-instances)
[Спавн предметов](https://dododex.ru/resources/)
[образ docker](https://hub.docker.com/r/hermsi/ark-server/)

@ -0,0 +1,21 @@
---
draft: false
date: 2023-10-17
tags:
- drivers
- hardware
---
# Железо
Куча разных ссылок с полезностями
## Загрузка драйверов
- [HP сетевые устройства](https://h10145.www1.hpe.com/downloads/ProductsList.aspx?smp=1)
- [HP сервера](https://support.hpe.com/hpesc/public/km/search#t=DriversandSoftware&sort=relevancy&layout=table&numberOfResults=25)
- [HP домашние устройства](https://support.hp.com/ru-ru/drivers)
## Проверка гарантии
- [Dell](https://www.dell.com/support/home/ru/ru/rsbsdt1/Products/?app=warranty)
- [HP](https://support.hp.com/us-en/checkwarranty)

@ -0,0 +1,23 @@
---
draft: false
date: 2023-10-17
tags:
- hikvision
- hardware
---
# Hikvision
## Hikvision: Путь до сохраненных файлов из веба
```
C:\Users\<USER>\AppData\Local\Microsoft\Windows\Temporary Internet Files\Virtualized\C\Users\<USER>\Web\DownloadFiles\
```
## Hikvision: Password Reset Tool
[https://ipcamtalk.com/pages/hikvision-password-reset-tool/](https://ipcamtalk.com/pages/hikvision-password-reset-tool/)
[http://hillbillyhobbies.com/camera/](http://hillbillyhobbies.com/camera/)
[https://ixnfo.com/sbros-parolya-na-hikvision-kamerah-i-videoregistratorah.html](https://ixnfo.com/sbros-parolya-na-hikvision-kamerah-i-videoregistratorah.html)

@ -0,0 +1,10 @@
---
draft: false
date: 2023-10-17
---
Мой велосипед, чтобы на потерять инструкции и что в нем щас есть
[Настройка заднего амортизатора](https://cloud.st1t.ru/s/HNkq72CJzEtJ7gB)
[](https://www.ridefox.com/fox17/help.php?m=bike&id=824)

@ -0,0 +1,58 @@
---
draft: false
date: 2023-10-17
slug: revert-hp-ban-cartridges
---
# Откат обновления, запрещающего использовать сторонние картриджи на лазерных принтерах HP
В 2020 году компания HP выпустила новую прошивку на свои принтера и МФУ. В прошивке оказался заблокирована возможность использования сторонних картриджей. Достигалось это путем блокировки чипов, выпущенных не HP. Назревала проблема, стоимость нового мфу равна стоимости комплекта катриджей к нему. Не приятненько..
<!-- more -->
!!! note
Данное руководство сделано для модели МФУ HP M282, но приминимо и для других моделей со схожей проблемой. Нужно лишь найти файл старой прошивки
Версия прошивки, с которой начались проблемы - 20221021
Решение этой проблемы состоит в том, чтобы выполнить откат на более старую прошивку, когда печать работала на сторонних картриджах.
Кста, проверить версию прошивки можно через меню на принтере: `Настройка` > `Обслуживание` > `Версия микропрограммы`
Версия, на которой печать с использованием сторонних катриджей работает: **20211221**
## Отключить автоматическое обновление
Требуется отключить автоматическое обновление и не позволить принтеру скачать прошивку вновь. Я крайне рекомендую, отключать проверку обновлений на всей печатной технике и обновлять её только руками.
В панели управления перейдите по ссылке `Настройка` > `Обслуживание` > `LaserJet обновление` > `Управление обновлением`:
Затем установите следующие параметры:
- Разрешить понижение версии: `Да`
- Проверять автоматически: `Нет`
- Запрос перед установкой: `Всегода спрашивать`
- Разрешить обновления: `Да`
## Скачать старую прошивку
Чтобы найти прошивку, в которой нет функции блока чипов, потребовалось перерыть кучу сайтов. На Reddit заветная прошивка была найдена. Как же много тех, кто тоже ищет способы решения проблемы. Найти прошмивку на оффицильном сайте тяжело, тк доступ к старым версиям закрыт.
Вот файл для скачивания старой версии прошвики: [HP_Color_LaserJet_Pro_M282_M285_Multifunction_Printer_series_20200603.rfu](https://cloud.mail.ru/public/KWrv/YBL199ZDe).
## Понизить прошивку
1. Откройте веб-интерфейс. Вверху нажмите **«Сеть»**.
2. Слева установите флажок `FTP-ПЕЧАТЬ` и примените настройки.
3. Откройте ваше любимое FTP-приложение, я использую Filezilla
4. Введите IP-адрес, полученный на шаге 4, и подключитесь (имя пользователя или пароль не требуются).
5. Перетащите файл `HP_Color_LaserJet_Pro_M282_M285_Multifunction_Printer_series_20200603.rfu` на FTP-сервер удаленного сервера (у меня он был пустым. Никаких файлов там не было).
6. Принтер должен начать установку встроенного ПО, отобразить логотип HP и **ПРОГРАММИРОВАНИЕ...** После завершения обновления все будет готово.
После обновления, у меня возникла проблема, что после включения принтер спустя пару минут зависал. Решалось это перезагрузкой принтера. Но после зависал снова.
Чтобы решить проблему, я обновил версию ПО. Установил ту что предлагалось. Спасибо HP, что чтобы поставить последнюю, надо ставить их попорядку.
Обновление ставить используя сам принтер, а не веб-интерфейс. Версия которая должна быть после обновления = **20211221**
!!! warning
Объязательно нужно проверить, не включилось ли автообновления. Если включились - выключить их.
Далее, выключаем любую возможность изменения прошивки: `Настройка` > `Обслуживание` > `LaserJet обновление` > `Управление обновлением` > `Разрешить обновления`: Нет

@ -1,367 +0,0 @@
# Руководство по Traefik Forward Auth Простая защита через Google SSO
![](https://st1t.ru/wp-content/uploads/2022/11/traefik-forward-auth-google-flow-840x525.png)
----------
Хотите защитить свой стек Docker чем-то более надежным, чем обычная HTTP-аутентификация? Google OAuth2 SSO с Traefik Forward Auth — ваш выбор.
Я был очень удивлен, узнав, что образ Thomseddon [Traefik Forward Auth](https://github.com/thomseddon/traefik-forward-auth) может защитить мои службы в Docker. Этот образ обеспечивает вход и аутентификацию OAuth/SSO для обратного прокси-сервера Traefik с использованием Traefik.
> Почему Traefik Google OAuth2 для служб Docker?
>
> Google OAuth2 позволяет вам использовать свою учетную запись Google для входа в свои службы. Использование **Google OAuth с Traefik** позволит вам добавлять учетные записи в белый список, внедрять двухфакторную аутентификацию Google, а также обеспечивать единый вход (SSO) для ваших служб. Это не только обеспечивает удобство, поскольку вам не нужно часто входить в систему, но и повышает безопасность.
Добавление Traefik OAuth2 для ваших служб Docker будет простым шагом и важным дополнением к вашему стеку Docker Traefik.
## НАСТРОЙКА TRAEFIK FORWARD AUTH ПРИ ПОМОЩИ GOOGLE OAUTH2
Добавление базовой аутентификации, предоставляемой Traefik, — это самый простой способ защитить ваш Docker и другие службы.
В нашем предыдущем руководстве мы рассмотрели, как использовать учетные данные для входа .htpasswd и промежуточное ПО **Traefik auth middleware** для добавления базовой аутентификации с использованием меток.
Для одной службы это может быть полезно, но это быстро становится неудобным и утомительным, когда приходится входить в несколько служб и для каждого сеанса браузера.
После внедрения **Traefik forward authentication** теперь нужно войти в систему только один раз. И внедрив _Traefik OAuth2 с Google_, можно добавить двухфакторную аутентификацию (2FA), что делает этот метод намного более безопасным и удобным, чем использование обычной аутентификации.
Если вы предпочитаете частную self-hosted систему многофакторной аутентификации (а не полагаться на Google), обратите внимание на Authelia или Keycloak. Я использовал Authelia для ранее, а сейчас перешел на Keyсloak для управления несколькими пользователями. Traefik OAuth2 я использую для домашних проектов.
> ### Что такое OAuth?
>
> **OAuth** — открытый протокол (схема) [авторизации](https://ru.wikipedia.org/wiki/%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F "Авторизация"), обеспечивающий предоставление третьей стороне ограниченный доступ к защищённым ресурсам пользователя без передачи ей (третьей стороне) логина и пароля [ Wikipedia](https://ru.wikipedia.org/wiki/OAuth)
Прежде чем настраивать Traefik Forward Auth с Google OAuth2, давайте посмотрим, как все это сочетается друг с другом.
### Как работает Google OAuth2 с Traefik?
Вход и аутентификация Google OAuth для Traefik действует как посредник для ваших служб, разрешая или запрещая доступ после проверки авторизованного файла cookie в вашем браузере. Подводя итог, процесс выглядит примерно так:
1. Для нашего хоста сделан **запрос** (например, https://traefik.example.com)
2. Запрос направляется нашим провайдером DNS на наш IP-адрес WAN, где порты 80 и 443 перенаправляются в контейнер Traefik.
3. Traefik видит входящий запрос и распознает, что **Forward Auth** определен в **метках** для этого хоста, поэтому запрос перенаправляется в контейнер **Traefik Forward Auth**.
4. Затем контейнер проверяет, есть ли в браузере авторизованный файл cookie. Если файл cookie отсутствует, запрос отправляется на **сервер авторизации Google OAuth2**.
5. После успешного входа в Google запрос отправляется на **URI перенаправления**, указанный для **веб-приложения** (https://oauth.example.com/_oauth).
6. Затем авторизованный файл cookie сохраняется в браузере, и пользователь отправляется во внутреннюю службу.
В следующий раз, когда этот браузер попытается получить доступ к службе, защищенной входом и аутентификацией на основе OAuth, файл cookie будет распознан, и пользователь будет перенаправлен на их службу без запроса на вход!
![](https://st1t.ru/wp-content/uploads/2022/11/traefik-forward-auth-google-flow-1024x654.png)
Этот процесс происходит очень быстро, и как только ваш браузер получит файл cookie, вы забудете, что даже включили Google OAuth с Traefik!
**Примечание.** Образ Traefik Forward Auth использует [**OpenID** **Connect**](https://en.wikipedia.org/wiki/OpenID_Connect) (**OIDC**),который представляет собой уровень аутентификации поверх протокола [OAuth 2.0](https://en.wikipedia.org/wiki/OAuth#OAuth_2.0 "OAuth"). Образ Docker, представленный в этом руководстве, поддерживает Google, а также [других поставщиков OIDC](https://github.com/thomseddon/traefik-forward-auth/wiki/Provider-Setup).
Позаботившись об основах, давайте перейдем к настройке прямой аутентификации Google OAuth Traefik для наших сервисов Docker.
> ### Как настроить OAuth?
>
> Настройка Google OAuth для Docker с помощью Traefik включает в себя 3 этапа:
>
> 1. создание записей DNS,
> 2. настройку службы Google OAuth2 и
> 3. изменение файлов компоновки Docker и добавление меток Traefik для активации прямой аутентификации.
Итак, во-первых, нам нужно настроить службу Traefik OAuth2. Давайте настроим все предварительные условия сейчас:
### Шаг 1. Создайте записи DNS
Начните с создания новой DNS-записи CNAME для нашей службы OAuth (Google перенаправит на этот адрес после аутентификации). В этом руководстве мы будем использовать доменное имя **example.com**.
Установите запись DNS как **oauth.example.com**. На рисунках ниже показан скриншот из Cloudflare. В зависимости от вашего провайдера DNS, для вас все может выглядеть по-разному, но по сути иметь одно и то же содержание.
![](https://st1t.ru/wp-content/uploads/2022/11/01-clouldflare-dns-for-google-oauth-1024x367.png)
Обратите внимание, что для распространения и активации записей DNS может потребоваться несколько часов.
В качестве альтернативы, если вы включили запись CNAME с подстановочными знаками, указывающую на ваш корневой домен, вы можете пропустить этот шаг.
### Шаг 2. Настройте службу Google OAuth2
Создав записи DNS, давайте перейдем к настройке Google OAuth.
#### Шаг 2.1. Создайте проект Google.
Нам нужно создать **проект Google**, который будет содержать наше **веб-приложение**, **экран согласия** и **учетные данные**.
Перейдите в [Google Cloud Developers Console](https://console.developers.google.com/) и убедитесь, что вы вошли в правильный аккаунт Google, который хотите использовать (обычно это будет ваш адрес электронной почты).
**Примечание.** Выйдите из других активных аккаунтов Google, чтобы убедиться, что на каждом этапе используется правильный аккаунт.
При появлении запроса вам нужно будет согласиться с **Условиями использования Google Cloud Platform**, чтобы использовать их API.
Сервис OAuth от Google можно использовать бесплатно, поэтому пока мы можем **отказаться** от бесплатной пробной версии. Нажмите «**Select a project**» и «**New project**».
![](https://st1t.ru/wp-content/uploads/2022/11/02-google-cloud-oauth-create-new-project-1024x498.png)
Введите уникальное имя для идентификации проекта, например **“Traefik Authentication”**. Нажмите **Create**.
![](https://st1t.ru/wp-content/uploads/2022/11/03-google-cloud-oauth-new-project-details.png)
#### Шаг 2.2. Создайте учетные данные OAuth
Теперь, когда наш проект создан, нам нужно создать идентификатор клиента и секрет клиента, чтобы пройти аутентификацию в Google. Выберите наш проект **Traefik Authentication** и в меню навигации выберите **APIs & Services > Credentials**. Нажмите **Create Credentials > OAuth client ID**.
![](https://st1t.ru/wp-content/uploads/2022/11/04-google-cloud-oauth-create-oauth-client-id.png)
#### Шаг 2.3: Настройте Consent Screen
После того, как вы нажмете Идентификатор клиента OAuth, вы увидите примечание о настройке consent screen, как показано ниже. Перед продолжением необходимо настроить consent screen.
После того, как вы нажмете **OAuth Client ID**, вы увидите примечание о настройке consent screen, как показано ниже. Перед продолжением необходимо настроить consent screen.
![](https://st1t.ru/wp-content/uploads/2022/11/05-google-cloud-oauth-configure-consent-screen.png)
Если автоматический запрос не появится, выберите **OAuth consent screen** на левой панели.
Далее выберите тип пользователей приложения. Выбираем тип **External** и нажимаем **Create**.
![](https://st1t.ru/wp-content/uploads/2022/11/06-google-cloud-oauth-consent-screen-type.png)
Выберите имя для своего приложения, например **Traefik Auth**, затем в разделе **Authorized domains** введите свой домен, например **example.com**. Убедитесь, что вы нажимаете **Enter**, чтобы добавить его, а затем нажмите **Save**.
![](https://st1t.ru/wp-content/uploads/2022/11/07-google-cloud-oauth-consent-screen.png)
После нажатия кнопки **Save** вы перейдете на следующий шаг. Везде нажимаем снизу **Save and Continue**.
#### **Шаг 2.4. Создайте идентификатор клиента OAuth.**
Выберите наш проект **Traefik Authentication** и в меню навигации выберите **APIs & Services > Credentials**. Нажмите **Create Credentials > OAuth client ID**.
Теперь выберите тип **Web Application** и введите имя для своего веб-приложения, например, **Traefik**. Кроме того, вам потребуется ввести **Authorized redirect URI** в виде _https://oauth.example.com/_oauth_. Убедитесь, что вы нажимаете **Enter**, чтобы добавить его, а затем нажмите **Save**.
**Примечание.** Вам разрешено добавлять только **URI перенаправления**, которые ведут на ваши **авторизованные домены**. Вернитесь к экрану согласия OAuth, если вам нужно их отредактировать.
![](https://st1t.ru/wp-content/uploads/2022/11/08-oauth-authorized-redirect-uris.png)
Учетные данные для нашего единого входа для Docker созданы! Скопируйте и сохраните **client ID** и **client secret**; нам нужно будет использовать их на следующем шаге.
![](https://st1t.ru/wp-content/uploads/2022/11/09-oauth-client-id-and-secret.png)
### Шаг 3. Настройте прямую аутентификацию Traefik с помощью OAuth2
Теперь, когда учетные данные OAuth настроены, осталось настроить контейнер OAuth. Войдите на свой локальный компьютер или используйте SSH-клиен для удаленного входа.
Обязательно остановите Traefik (при необходимости) и отредактируйте файл docker-compose, добавив метки Traefik и контейнер OAuth, как описано ниже.
Предполагается, что вы уже прочитали и выполнили большую часть моего руководства по Traefik 2 и читаете этот пост только для того, чтобы внедрить Google OAuth.
#### Шаг 3.1. Создайте промежуточное ПО Traefik Auth и цепочку
Давайте теперь укажем промежуточное ПО для аутентификации Traefik для OAuth2. Создайте новый файл middlewares-oauth.yml и добавьте следующие строки:
```yaml
http:
middlewares:
middlewares-oauth:
forwardAuth:
address: "http://oauth:4181" # Make sure you have the OAuth service in docker-compose.yml
trustForwardHeader: true
authResponseHeaders:
- "X-Forwarded-User"
```
Кроме того, давайте создадим новую цепочку промежуточного программного обеспечения для сервисов, которые будут использовать Google OAuth. Откройте файл **middleware-chains.yml**, созданный в моем руководстве по Traefik, и добавьте следующие строки ниже того, что уже есть:
```yaml
http:
middlewares:
chain-oauth:
chain:
middlewares:
- middlewares-rate-limit
- middlewares-https-redirectscheme
- middlewares-secure-headers
- middlewares-oauth
- middlewares-compress
```
**Примечание:** Промежуточное ПО для ограничения скорости, перенаправления HTTPS, заголовков безопасности и сжатия должно быть определено в соответствии с моим руководством Traefik. В противном случае Traefik не запустится.
Сохраните файлы и выйдите из редактирования.
#### Шаг 3.2: Добавьте секреты прямой аутентификации Traefik
Вместо того, чтобы создавать несколько секретов, мы создадим один секретный файл для прямой аутентификации Traefik, который будет содержать все учетные данные.
Создайте файл с именем **traefik_forward_auth** в папке **secrets** ($DOCKERDIR\secrets, если ваша установка основана на моих руководствах) и добавьте в него следующее содержимое:
```
providers.google.client-id=yourGOOGLEclientID
providers.google.client-secret=yourCLIENTsecret
secret=yourOAUTHsecret
whitelist=yourEMAILaddress1
whitelist=yourEMAILaddress2
```
Настройте вышеуказанное, используя информацию ниже:
- **yourGOOGLEclientID** и **yourCLIENTsecret**: полученные ранее в этом руководстве по Traefik Oauth2.
- **yourOAUTHsecret**: используется для подписи файла cookie и должен быть случайным. Создайте случайный секрет с помощью:
`openssl rand -hex 16`
Кроме того, вы можете использовать [онлайн-сервис, подобный этому](https://www.browserling.com/tools/random-string), для создания случайного секрета.
![](https://st1t.ru/wp-content/uploads/2022/11/10-random-secret.png)
- **yourEMAILAddress1**: идентификатор электронной почты Google, который будет использоваться для аутентификации. При желании вы можете добавить дополнительные адреса электронной почты, которым разрешено проходить аутентификацию (например, **yourEMAILAddress2**; удалите эту строку, если вы хотите разрешить только один идентификатор электронной почты).
Сохранить и выйти.
Обратите внимание, что папка **secrets** и файл **traefik_forward_auth** должны иметь разрешение **600** и принадлежать пользователю **root**.
Далее давайте настроим контейнер OAuth Forwarder.
#### Шаг 3.3: Добавляем OAuth Forwarder контейнер
Откройте файл docker-compose, который был создан на основе нашего предыдущего руководства по Traefik 2, и добавьте в него следующее.
# Google OAuth - Single Sign On using OAuth 2.0
```yaml
version: '3.7'
services:
oauth:
container_name: oauth
image: thomseddon/traefik-forward-auth:latest
restart: unless-stopped
security_opt:
- no-new-privileges:true
environment:
- CONFIG=/config
- COOKIE_DOMAIN=$DOMAINNAME_CLOUD_SERVER
- INSECURE_COOKIE=false
- AUTH_HOST=oauth.$DOMAINNAME_CLOUD_SERVER
- URL_PATH=/_oauth
- LOG_LEVEL=info
- LOG_FORMAT=text
- LIFETIME=86400 # 1 day
- DEFAULT_ACTION=auth
- DEFAULT_PROVIDER=google
secrets:
- source: traefik_forward_auth
target: /config
labels:
- "traefik.enable=true"
## HTTP Routers
- "traefik.http.routers.oauth-rtr.tls=true"
- "traefik.http.routers.oauth-rtr.entrypoints=https"
- "traefik.http.routers.oauth-rtr.rule=Host(`oauth.$DOMAINNAME_CLOUD_SERVER`)"
## Middlewares
- "traefik.http.routers.oauth-rtr.middlewares=chain-oauth@file"
## HTTP Services
- "traefik.http.routers.oauth-rtr.service=oauth-svc"
- "traefik.http.services.oauth-svc.loadbalancer.server.port=4181"
```
**$DOMAINNAME_CLOUD_SERVER** = имя вашего домена в файле .env
Обратите внимание, что мы используем цепочку промежуточного программного обеспечения аутентификации Traefik (**chain-oauth**) для аутентификации вместо базовой аутентификации. Используйте правильный образ для архитектуры вашей системы.
Вы также можете изменить продолжительность (**LIFETIME**), в течение которой аутентификация действительна, с 1 дня, указанного в секундах, на другую продолжительность. Сначала установите **LOG_LEVEL** для **trace** или **debug**. Когда все заработает, вы можете изменить его на **warn**.
При желании остальные переменные среды, определенные для oauth , можно настроить по своему вкусу (если вы знаете, что делаете).
После этого используйте команду docker-compose up. Теперь вы должны быть перенаправлены на страницу входа в систему Google OAuth перед доступом к службе.
#### Шаг 3.4. Добавление Google OAuth для служб Docker
Возьмем пример панели инструментов Traefik 2. Если вы следовали моему руководству по Traefik, теперь у вас должна быть базовая аутентификация с использованием промежуточного программного обеспечения:
```
## Middlewares
- "traefik.http.routers.traefik-rtr.middlewares=middlewares-basic-auth@file"
```
Или цепочка промежуточного программного обеспечения:
```
- "traefik.http.routers.traefik-rtr.middlewares=chain-basic-auth@file"
```
Мы уже определили цепочку промежуточного программного обеспечения для Traefik oauth (**chain-oauth**) выше.
Перейти с базовой аутентификации на oauth теперь так же просто, как изменить **chain-basic-auth** на **chain-oauth** в файле **docker-compose** (показано ниже).
```
- "traefik.http.routers.traefik-rtr.middlewares=chain-oauth@file"
```
Итак, вот и все, вход и аутентификация на основе OAuth для стека обратного прокси-сервера Traefik.
После этого используйте команду **docker-compose up**.
#### Шаг 3.5. Добавление OAuth в другие (не Docker) службы
Приложениями, не относящимися к Docker, могут быть любые службы, находящиеся в хост-системе или в удаленной системе.
Поставщик файлов Traefik позволяет нам добавлять динамические маршрутизаторы, промежуточное ПО и службы. Раньше мы использовали наш каталог rules только для добавления промежуточного программного обеспечения, но мы можем легко добавить внешний хост, добавив новый файл в этот каталог. Traefik автоматически обнаружит и обновит свои конфигурации.
Давайте для примера возьмем сервис ex1, работающий на другом хосте (192.168.1.100).
Чтобы добавить к сервису возможность аутентификации Traefik OAuth2, вам нужно всего лишь создать промежуточное ПО маршрутизатора, как показано ниже.
```
http:
routers:
ex1-rtr:
rule: "Host(`ex1.{{env "DOMAINNAME_CLOUD_SERVER"}}`)"
entryPoints:
- https
middlewares:
- chain-oauth
service: ex1-svc
tls:
certResolver: dns-cloudflare
services:
ex1-svc:
loadBalancer:
servers:
- url: "http://192.168.1.100:80" # or whatever your external host's IP:port is
```
Интерфейс ex1 будет доступен по адресу **ex1.example.com**, при условии, что для переменной среды **DOMAINNAME_CLOUD_SERVER** установлено значение **example.com** и она передается в контейнер Traefik.
Поскольку каталог rules является динамическим, просто добавив этот файл в этот каталог, мы создали маршрут. Вы должны иметь возможность подключиться к ex1 через Google OAuth2 без перезапуска Traefik!
## ОБХОД OAUTH / ВЫБОРОЧНАЯ АУТЕНТИФИКАЦИЯ
Некоторые приложения не могут аутентифицировать себя и пройти через авторизацию Oauth. Для этого есть обход Oauth на основе правил [Auth Forwarder GitHub](https://github.com/thomseddon/traefik-forward-auth).
Вы можете обойти аутентификацию на основе определенных ключей в заголовках, регулярных выражениях, хосте, пути, запросе и многом другом.
**Примечание.** Используя неправильно указанное правило, вы можете легко отключить аутентификацию, когда не собираетесь этого делать. Поэтому я настоятельно рекомендую конкретные и узкие правила обхода аутентификации.
### Определение правила обхода
Как мы можем выяснить, какие конкретные правила использовать?
Это может быть довольно сложно. Как указано в приведенной ниже ссылке, общий способ обхода аутентификации — использование пути.
Но это может ослабить безопасность, и я рекомендую установить определенные правила. Например, если в заголовке запроса содержится ключ API, аутентификация будет пропущена.
Проверьте журналы Docker для контейнера OAuth (основные команды Docker). Это выдаст почти все, что происходит в этом контейнере, что может быть ошеломляющим. Вы можете сократить это до интересующего вас приложения, введя команду grep ****.
### Указание правила обхода OAuth
Обратите внимание, что **uri** в логах может содержать ключ API (X-Api-Key:[apikey]). Таким образом, вы можете установить использование обхода на основе этого следующим образом. На примере файла middleware сервиса ex1:
В строчку
```
rule: "Host(`ex1.{{env "DOMAINNAME_CLOUD_SERVER"}}`)"
```
Дописываем
```
rule: "Host(`ex1.{{env "DOMAINNAME_CLOUD_SERVER"}}`) && Headers(`X-Api-Key`, `$API_KEY`)"
```
Перезапустите контейнер OAuth и попробуйте сейчас получить доступ к ex1 через приложение и браузер. Браузер должен представить логин OAuth, а приложение должно направить вас напрямую к сервису.
### Использование пользовательских заголовков
Некоторые приложения позволяют добавлять собственные заголовки. Поэтому, когда приложение пытается связаться с вашим Radarr, Sonarr и т. д., может быть отправлен собственный заголовок.
Затем этот настраиваемый заголовок можно отслеживать и, если он присутствует, можно использовать для запуска обхода. Это альтернатива поиску ключей API. Вы можете установить один стандартный заголовок для всех приложений и использовать для всех одно и то же правило обхода. Это также устраняет догадки и пробы и ошибки, описанные выше.
## OAUTH И ЗАГОЛОВКИ БЕЗОПАСНОСТИ
Одна вещь, которую следует отметить при использовании службы **Traefik OAuth2**, — это ваши заголовки безопасности. Если служба использует **OAuth** и вы пытаетесь проверить, применяются ли ваши заголовки безопасности, вы, вероятно, получите более низкую оценку.
## FAQ
### **Что такое traefik-forward-auth-provider?**
Прямая аутентификация Traefik — это служба, которая интегрируется со сторонним поставщиком аутентификации (например, Google, Microsoft, Authelia и т. д.) для защиты ваших служб и веб-приложений.
### **В чем разница между OIDC и OAuth?**
OIDC или OpenID Connect (OIDC) — это протокол аутентификации. Это набор спецификаций, основанный на OAuth 2.0, который добавляет дополнительные функции. По сути, OIDC — это аутентичный протокол, а OAuth — набор спецификаций для доступа к ресурсам и их совместного использования.
### Существуют ли другие (более частные) альтернативы Google OAuth?
Да. [Authelia](https://github.com/authelia/authelia) и [Keycloak](https://github.com/keycloak/keycloak) два, о которых я могу вспомнить. ИМХО, Authelia была намного проще в настройке, чем Keycloak. Существует также [Authentik](https://goauthentik.io/).

@ -1,19 +0,0 @@
# Настройка бекапов в Veeam Agent
----------
![](https://st1t.ru/wp-content/uploads/2023/04/veeam_agent_configure_backup_1.png)
![](https://st1t.ru/wp-content/uploads/2023/04/veeam_agent_configure_backup_2.png)
![](https://st1t.ru/wp-content/uploads/2023/04/veeam_agent_configure_backup_3.png)
![](https://st1t.ru/wp-content/uploads/2023/04/veeam_agent_configure_backup_4.png)
![](https://st1t.ru/wp-content/uploads/2023/04/veeam_agent_configure_backup_6.png)
![](https://st1t.ru/wp-content/uploads/2023/04/veeam_agent_configure_backup_7.png)
![](https://st1t.ru/wp-content/uploads/2023/04/veeam_agent_configure_backup_5.png)
![](https://st1t.ru/wp-content/uploads/2023/04/veeam_agent_configure_backup_8.png)

@ -0,0 +1,50 @@
# Docker Compose Profile - профили
Те, кто юзает docker-compose, обычно делятся на 2 типа:
- пихаем все в 1 файл на каждый хост
- пихаем в разные файлы с какой-то логикой
А что если я напишу, что можно совместить эти 2 типа людей. Один файл, но с разбивкой по профилям с какой-то логикой. Звучит правда классно?
Возьмем классический монолитный файл docker-compose:
```yaml title="docker-compose.yml"
version: "3.9"
services:
nginx1:
image: nginx
container_name: nginx1
profiles:
- prod
- test
nginx2:
image: nginx
container_name: nginx2
profiles:
- prod
nginx3:
image: nginx
container_name: nginx3
profiles:
- test
```
Используя profile, можно поместить 1 службу в несколько профилей, что дает больше гибкости, чем несколько файлов.
```bash
user@test tmp % docker-compose --profile test up -d
[+] Running 2/2
⠿ Container nginx1 Started 0.1s
⠿ Container nginx3 Started
```
Пример выше показывает, что были запущены только сервисы, с профилем `test`. Больше информации можно найти в [документации Docker](https://docs.docker.com/compose/profiles/) .
!!! note
Eсли включаем профиль, то простой вариант `docker-compose up -d` не выполнится:
```bash
user@test tmp % docker-compose up -d
no service selected
```

@ -0,0 +1,107 @@
# Dockge
![](../images/docker/dockge.svg){: style="height:150px;width:150px"}
[![](https://img.shields.io/github/stars/louislam/dockge?label=%E2%AD%90%20Stars&style=flat-square)](https://github.com/louislam/dockge)
[![](https://img.shields.io/github/v/release/louislam/dockge?label=%F0%9F%9A%80%20Release&style=flat-square)](https://github.com/louislam/dockge/releases/latest)
[![Docker Pulls](https://img.shields.io/docker/pulls/louislam/dockge.svg?maxAge=60&style=flat-square)](https://hub.docker.com/r/louislam/dockge/)
Стильный, простой и быстрый self-hosted менеджер Docker Compose менеджер.
![](../images/docker/dockge01.png)
## ⭐ Возможности
- 🧑‍💼 Управление `compose.yaml` файлом
- Создание/Редактирование/Запуск/Остановка/Перезапуск/Удаление
- Обновление Docker образов
- ⌨️ Интерактивный редактор для `compose.yaml`
- 🦦 Интерактивный Web-терминал
- 🕷️ (1.4.0 🆕) Поддержка нескольких инстансов - Можно управлять несколькими стаками на разных Docker хостах через один интерфейс
- 🏪 Преобразование `docker run ...` команд в `compose.yaml`
- 📙 Файловая структура - Dockge не меняет изначальные файлы, они хранятся на диске как обычно. Можно взаимодействовать с ними, используя обычные `docker compose` команды
- 🚄 Быстрый - Прогресс (Pull/Up/Down) и вывод терминала в режиме реального времени
- 🐣 Простой в использовании и стильный пользовательский интерфейс.
## 🔧 Установка
Требования:
- [Docker](https://docs.docker.com/engine/install/) 20+ / Podman
- (Podman only) podman-docker (Debian: `apt install podman-docker`)
- OS:
- Основные дистрибутивы Linux могут запускать Docker/Podman, например:
- ✅ Ubuntu
- ✅ Debian (Bullseye или новее)
- ✅ Raspbian (Bullseye или новее)
- ✅ CentOS
- ✅ Fedora
- ✅ ArchLinux
- Arch: armv7, arm64, amd64 (a.k.a x86_64)
### Основы
- Папка хранения стеков: `/opt/stacks`
- Порт: 5001
```
# Create directories that store your stacks and stores Dockge's stack
mkdir -p /opt/stacks /opt/dockge
cd /opt/dockge
# Download the compose.yaml
curl https://raw.githubusercontent.com/louislam/dockge/master/compose.yaml --output compose.yaml
# Start the server
docker compose up -d
# If you are using docker-compose V1 or Podman
# docker-compose up -d
```
Dockge будет запущен по адресу http://localhost:5001
### Углубленный
```yaml
services:
dockge:
image: louislam/dockge:1
restart: unless-stopped
ports:
# Host Port : Container Port
- 5001:5001
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./data:/app/data
# If you want to use private registries, you need to share the auth file with Dockge:
# - /root/.docker/:/root/.docker
# Stacks Directory
# ⚠️ READ IT CAREFULLY. If you did it wrong, your data could end up writing into a WRONG PATH.
# ⚠️ 1. FULL path only. No relative path (MUST)
# ⚠️ 2. Left Stacks Path === Right Stacks Path (MUST)
- /opt/stacks:/opt/stacks
environment:
# Tell Dockge where is your stacks directory
- DOCKGE_STACKS_DIR=/opt/stacks
```
## Обновление
```bash
cd /opt/dockge
docker compose pull && docker compose up -d
```
## Скриншоты
![](https://github.com/louislam/dockge/assets/1336778/e7ff0222-af2e-405c-b533-4eab04791b40)
![](https://github.com/louislam/dockge/assets/1336778/7139e88c-77ed-4d45-96e3-00b66d36d871)
![](https://github.com/louislam/dockge/assets/1336778/f019944c-0e87-405b-a1b8-625b35de1eeb)
![](https://github.com/louislam/dockge/assets/1336778/a4478d23-b1c4-4991-8768-1a7cad3472e3)

@ -0,0 +1,97 @@
# Drone CI
```yaml title="docker-compose.yml"
version: '3.7'
services:
drone:
image: drone/drone:latest
container_name: drone
environment:
- DRONE_GITEA_SERVER=https://gitea.example.com/
- DRONE_GIT_ALWAYS_AUTH=true
- DRONE_GITEA_CLIENT_ID=<DRONE_GITEA_CLIENT_ID>
- DRONE_GITEA_CLIENT_SECRET=<DRONE_GITEA_CLIENT_SECRET>
- DRONE_SERVER_HOST=drone.example.com
- DRONE_SERVER_PROTO=https
- DRONE_RPC_SECRET=<DRONE_RPC_SECRET>
- DRONE_USER_CREATE=username:admin,admin:true # Имя указать, что юзается в gitea
# Если есть PostgreSQL
#- DRONE_DATABASE_DRIVER=postgres
#- DRONE_DATABASE_DATASOURCE=postgres://root:password@1.2.3.4:5432/drone?sslmode=disable
restart: unless-stopped
drone-runner-docker:
image: drone/drone-runner-docker:1
container_name: drone-runner-docker
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- DRONE_RPC_PROTO=https
- DRONE_RPC_HOST=drone.example.com>
- DRONE_RUNNER_CAPACITY=2
- DRONE_RUNNER_NAME=whatsinaname
restart: unless-stopped
```
## Примеры
### Нотификация в telegram
```yaml
- name: telgram_notify
image: appleboy/drone-telegram
when:
status:
#- success
- failure
settings:
# The secrets below can be entered from the Drone UI for this repo
token:
from_secret: telegram_token
to:
from_secret: telegram_chat_id
format: markdown
message: >
{{#success build.status}}
✅ Build #{{build.number}} of `{{repo.name}}` succeeded.
📝 Commit by {{commit.author}} on `{{commit.branch}}`:
```
{{commit.message}}
```
🌐 {{ build.link }}
{{else}}
❌ Build #{{build.number}} of `{{repo.name}}` failed.
📝 Commit by {{commit.author}} on `{{commit.branch}}`:
```
{{commit.message}}
```
🌐 {{ build.link }}
{{/success}}
```
### Сборка mcdocs
```yaml
- name: build states
image: squidfunk/mkdocs-material:latest:latest
pull: if-not-exists
volumes:
- name: site
path: /site
commands:
- mkdocs build
- cp -r site/ /site
- chown 1000:1000 /site
- chmod -R 777 /site
when:
event:
- push
branch:
- states/*
volumes:
- name: site
host:
path: /opt/appdata/mkdocswiki
```

@ -0,0 +1,21 @@
# Ошибки в Docker
## WARNING: Error loading config file
При выполнении любой команды, например `docker run --rm -ti ubuntu:14.04 /bin/bash` выдаетс ошибка
```
WARNING: Error loading config file:/home/username/.docker/config.json - stat /home/username/.docker/config.json: permission denied
```
Причина: нарушена пренадлежность файла `config.json`
Решение: восстановить принадлежность файла:
```
sudo chown $USER /home/username/.docker/config.json
```
или каталога:
```
sudo chown -R $USER /home/username/.docker
```

@ -0,0 +1,50 @@
# ARK: Survival Evolved - Dedicated Server
```yaml title="docker-compose.yml"
version: '3.7'
services:
ark-server:
restart: always
container_name: ark-server
image: hermsi/ark-server:latest
volumes:
- ./ark-server:/app #main location for game server
- ./ark-server-backups:/home/steam/ARK-Backups # folder for backup
environment:
- SESSION_NAME=$SESSION_NAME
- SERVER_MAP=$SERVER_MAP
- SERVER_PASSWORD=$SERVER_PASSWORD
- ADMIN_PASSWORD=$ADMIN_PASSWORD
- MAX_PLAYERS=$MAX_PLAYERS
- UPDATE_ON_START=$UPDATE_ON_START
- BACKUP_ON_STOP=$BACKUP_ON_STOP
- PRE_UPDATE_BACKUP=$PRE_UPDATE_BACKUP
- WARN_ON_STOP=$WARN_ON_STOP
- GAME_MOD_IDS=$GAME_MOD_IDS
ports:
# Port for connections from ARK game client
- "7777:7777/udp"
# Raw UDP socket port (always Game client port +1)
- "7778:7778/udp"
# RCON management port
- "27020:27020/tcp"
# Steam's server-list port
- "27015:27015/udp"
```
```env title=".env"
SESSION_NAME="ark server"
SERVER_MAP=Viking_P
SERVER_PASSWORD=
ADMIN_PASSWORD=strong-password
MAX_PLAYERS=10
UPDATE_ON_START=true
BACKUP_ON_STOP=true
PRE_UPDATE_BACKUP=false
WARN_ON_STOP=true
GAME_MOD_IDS="id_mods_1,id_mods_2"
```
ссылки на моды, что я юзаю на своем сервере:
1838617463,520879363,889745138,1404697612,1814953878,731604991,2804332920,2718221803,1762210129,2765267311,1251632107,1565015734,821530042,2121156303,702828089,741203089,898049820

@ -0,0 +1,35 @@
# Factorio
[![Docker Version](https://img.shields.io/docker/v/factoriotools/factorio?sort=semver)](https://hub.docker.com/r/factoriotools/factorio/)
[![Docker Pulls](https://img.shields.io/docker/pulls/factoriotools/factorio.svg?maxAge=600)](https://hub.docker.com/r/factoriotools/factorio/)
[![Docker Stars](https://img.shields.io/docker/stars/factoriotools/factorio.svg?maxAge=600)](https://hub.docker.com/r/factoriotools/factorio/)
```yaml title="docker-compose.yml"
version: "3.7"
networks:
direct_net:
external: true
services:
factorio:
container_name: factorio
image: factoriotools/factorio:1.1.96
ports:
- "34197:34197/udp"
#- "27015:27015/tcp"
volumes:
- /opt/appdata/games/factorio:/factorio
networks:
- direct_net
security_opt:
- no-new-privileges:true
restart: unless-stopped
environment:
- PUID=1000
- PGID=1000
- TZ="Asia/Yekaterinburg"
- UPDATE_MODS_ON_START=true
- SAVE_NAME
```

@ -0,0 +1,134 @@
# Gitea
[Gitea](https://gitea.io/en-us/) - это self-hosted сервис, аналог GitHub. Основное отличие от GitLab - меньшее потребление ресурсов, прозрачность при обновлении. Gitea может использоваться как локально, так и в облачном режиме.
## Создание файлов конфигурации
Создадим папку, где будут храниться файл `docker-compose.yml`, а так же другие файлы, связанные с gitea.
Создадим файл `docker-compose.yml`:
```yaml title="docker-compose.yml"
version: '3.7'
services:
server:
image: gitea/gitea:latest
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
restart: always
volumes:
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
- ./data:/data
- ./custom:/app/gitea/custom
- ./log:/app/gitea/log
ports:
- 10880:3000
- 10022:22
```
В нем:
<table>
<tr>
<td><b>Параметр</b></td>
<td><b>Описание</b></td>
</tr>
<tr>
<td>
```yaml
image: gitea/gitea:latest
```
</td>
<td>Указываем, что используем последнию версию образа gitea, доступную в Docker Hub</td>
</tr>
<tr>
<td>
```yaml
container_name: gitea
```
</td>
<td>Имя контейнера</td>
</tr>
<tr>
<td>
```yaml
restart: always
```
</td>
<td>Автоматический перезапуск контейнера, при остановке</td>
</tr>
<tr>
<td>
```yaml
environment:
- USER_UID=1000
- USER_GID=1000
```
</td>
<td>ID пользователя и группы, использующиеся в контейнере</td>
</tr>
<tr>
<td>
```yaml
volumes:
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
- ./data:/data
- ./custom:/app/gitea/custom
- ./log:/app/gitea/log
```
</td>
<td>
- `/etc/timezone` и `/etc/localtime` - берем таймзону и время из настроек хоста
- `./data` - хранение файлов данных gitea
- `./custom` - пользовательские файлы конфигурации
- `./log` - логи
</td>
</tr>
<tr>
<td>
```yaml
ports:
- "3000:3000"
- "10022:22"
```
</td>
<td>
Задаем порты, для доступа к gitea. 3000 - для веб-интерфейса. 10022 - для доступа через SSH
</td>
</tr>
</table>
## Запуск контейнера
Перейдем в директорию, где находится файл `docker-compose.yml` и запустим с помощью команды:
```
docker-compose up -d
```
Произойдет запуск контейнера gitea в фоновом режиме. В первый раз может занять какое-то время.
После запуска, нужно открыть браузер и ввести адрес: `http://server-ip:3000`. Заполняем поля. По умолчанию используется БД SQLite. В Administrator Account Settings обязательно укажите имя пользователя и пароль для учетной записи администратора.
Готово.

@ -1,80 +1,57 @@
# Как запустить Prometheus и Grafana используя Docker Compose # Grafana
---------- Для запуска будет использовать Docker Compose. Я предпологаю, что уже есть настроенное окружение с Docker Compose, если нет, то сделать можно в [инструкции](../install.md).
Docker Compose используется для запуска нескольких контейнеров как одной службы. Если у вас есть приложение/стек, требующий разных служб, docker compose позволяет создать один файл, который запустит все контейнеры как одну службу и избавит вас от необходимости запускать их по отдельности. Также можно запускать по одной службе за раз с помощью docker compose. Сегодня мы рассмотрим, как запустить Prometheus и Grafana с помощью docker compose. Grafana — один из самых популярных инструментов мониторинга. В сочетании с Prometheus, Grafana предлагает мощный инструмент визуализации данных временных рядов.
Чтобы иметь возможность использовать Docker Compose, в вашей системе должны быть установлены как Docker, так и Docker Compose.
Prometheus — это база данных временных рядов, использующая экспортеры для мониторинга различных серверов/сервисов, а Grafana — один из самых популярных инструментов мониторинга. В сочетании с Prometheus, Grafana предлагает мощный инструмент визуализации данных временных рядов.
Чтобы запустить Prometheus и Grafana с помощью docker compose, нам нужно создать файл docker compose, определяющий отдельные сервисы (Prometheus и Grafana), используемые образы, запущенные порты и все остальное необходимое. Чтобы запустить Prometheus и Grafana с помощью docker compose, нам нужно создать файл docker compose, определяющий отдельные сервисы (Prometheus и Grafana), используемые образы, запущенные порты и все остальное необходимое.
## Использование постоянных томов с Docker Compose Использование постоянных томов с Docker Compose
Нам нужно учитывать тот факт, что для Grafana требуется файл конфигурации и файл источника данных. Promemetheus также требует файла конфигурации. Для этого мы будем использовать смонтированные тома (постоянные тома), чтобы можно было легко вносить изменения в файлы, когда это необходимо. Нам нужно учитывать тот факт, что для Grafana требуется файл конфигурации и файл источника данных. Promemetheus также требует файла конфигурации. Для этого мы будем использовать смонтированные тома (постоянные тома), чтобы можно было легко вносить изменения в файлы, когда это необходимо.
Создайте рабочий каталог с именем _prometheus-grafana_ и внутри него создайте каталоги для хранения файлов конфигурации Prometheus и Grafana. Создайте рабочий каталог с именем prometheus-grafana и внутри него создайте каталоги для хранения файлов конфигурации Prometheus и Grafana.
mkdir -p ~/prometheus-grafana/{grafana,prometheus} mkdir -p ~/prometheus-grafana/{grafana,prometheus}
Теперь перейдите в каталог _grafana_ и создайте файлы конфигурации. Файл конфигурации **Grafana** по умолчанию предоставляется в официальном репозитории Github. Создайте файл с именем _grafana.ini,_ скопируйте и вставьте конфигурацию grafana по умолчанию в этот файл и сохраните. Теперь перейдите в каталог grafana и создайте файлы конфигурации. Файл конфигурации Grafana по умолчанию предоставляется в официальном репозитории Github. Создайте файл с именем grafana.ini, скопируйте и вставьте конфигурацию grafana по умолчанию в этот файл и сохраните.
Контент для конфигурации Grafana по умолчанию можно найти по _адресу https://github.com/grafana/grafana/blob/master/conf/defaults.ini_ . Обратите внимание, что вы можете вносить изменения в файл конфигурации по умолчанию в соответствии с вашими потребностями. Контент для конфигурации Grafana по умолчанию можно найти по адресу https://github.com/grafana/grafana/blob/master/conf/defaults.ini . Обратите внимание, что вы можете вносить изменения в файл конфигурации по умолчанию в соответствии с вашими потребностями.
wget https://raw.githubusercontent.com/grafana/grafana/main/conf/defaults.ini -O ~/prometheus-grafana/grafana/grafana.ini vim ~/prometheus-grafana/grafana/grafana.ini wget https://raw.githubusercontent.com/grafana/grafana/main/conf/defaults.ini -O ~/prometheus-grafana/grafana/grafana.ini vim ~/prometheus-grafana/grafana/grafana.ini
После этого перейдите в папку Prometheus и создайте файл конфигурации prometheus, чтобы указать Prometheus, где брать метрики. Поскольку у меня нет отдельного сервера для мониторинга, отображаемые метрики относятся к самому серверу prometheus (localhost:9090) После этого перейдите в папку Prometheus и создайте файл конфигурации prometheus, чтобы указать Prometheus, где брать метрики. Поскольку у меня нет отдельного сервера для мониторинга, отображаемые метрики относятся к самому серверу prometheus (localhost:9090)
```bash
nano ~/prometheus-grafana/prometheus/prometheus.yml nano ~/prometheus-grafana/prometheus/prometheus.yml
```
<code>global: ```yaml
global:
scrape_interval: 15s scrape_interval: 15s
scrape_timeout: 10s scrape_timeout: 10s
evaluation_interval: 15s evaluation_interval: 15s
alerting: alerting:
alertmanagers: alertmanagers:
static_configs:
- static_configs: targets: []
- targets: []
scheme: http scheme: http
timeout: 10s timeout: 10s
api_version: v1 api_version: v1
scrape_configs: scrape_configs:
job_name: prometheus
- job_name: prometheus
honor_timestamps: true honor_timestamps: true
scrape_interval: 15s scrape_interval: 15s
scrape_timeout: 10s scrape_timeout: 10s
metrics_path: /metrics metrics_path: /metrics
scheme: http scheme: http
static_configs: static_configs:
targets:
- targets: localhost:9090
```
- localhost:9090</code>
Вы можете открыть и изменить файл в соответствии с вашим вариантом использования. Вы можете открыть и изменить файл в соответствии с вашим вариантом использования.
nano ~/prometheus-grafana/prometheus/prometheus.yml nano ~/prometheus-grafana/prometheus/prometheus.yml
На данный момент Grafana не показывает, откуда брать данные. Нам нужно сказать ему, чтобы он достался от Прометея. Создайте файл с именем _datasource.yml_ в каталоге grafana. На данный момент Grafana не показывает, откуда брать данные. Нам нужно сказать ему, чтобы он достался от Прометея. Создайте файл с именем datasource.yml в каталоге grafana.
nano ~/prometheus-grafana/grafana/datasource.yml nano ~/prometheus-grafana/grafana/datasource.yml
@ -82,8 +59,7 @@ apiVersion: 1
datasources: datasources:
- name: Prometheus name: Prometheus
type: prometheus type: prometheus
url: http://localhost:9090 url: http://localhost:9090
@ -118,8 +94,7 @@ ipam:
config: config:
- subnet: 192.168.200.0/24 subnet: 192.168.200.0/24
services: services:
prometheus: prometheus:
@ -134,8 +109,7 @@ restart: always
networks: networks:
- direct_net direct_net
ulimits: ulimits:
nofile: nofile:
@ -156,11 +130,11 @@ command:
volumes: volumes:
- $DOCKER_APP/prometheus:/data $DOCKER_APP/prometheus:/data
- /etc/timezone:/etc/timezone:ro /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro /etc/localtime:/etc/localtime:ro
grafana: grafana:
@ -174,23 +148,21 @@ restart: always
networks: networks:
- direct_net direct_net
security_opt: security_opt:
- no-new-privileges:true no-new-privileges:true
environment: environment:
GF_INSTALL_PLUGINS: "grafana-clock-panel,grafana-simple-json-datasource,grafana-worldmap-panel,grafana-piechart-panel" GF_INSTALL_PLUGINS: "grafana-clock-panel,grafana-simple-json-datasource,grafana-worldmap-panel,grafana-piechart-panel"
volumes: volumes:
- ~/prometheus-grafana/grafana/data:/var/lib/grafana ~/prometheus-grafana/grafana/data:/var/lib/grafana
- /etc/timezone:/etc/timezone:ro /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro /etc/localtime:/etc/localtime:ro
Если вам нужно указать конкретную версию Prometheus или Grafana, вы можете добавить номер версии, чтобы он выглядел так: Если вам нужно указать конкретную версию Prometheus или Grafana, вы можете добавить номер версии, чтобы он выглядел так:
@ -198,17 +170,15 @@ services:
prometheus: prometheus:
image: prom/prometheus:<VERSION-TAG>#get tag https://hub.docker.com/r/prom/prometheus/tags image: prom/prometheus:#get tag https://hub.docker.com/r/prom/prometheus/tags
---
grafana: grafana:
image: grafana/grafana:<VERSION-TAG># Tags https://hub.docker.com/r/grafana/grafana/tags image: grafana/grafana:# Tags https://hub.docker.com/r/grafana/grafana/tags
Также целью создания стека Prometheus/Grafana является мониторинг других сервисов, работающих, возможно, на разных серверах. Prometheus использует разные экспортеры для предоставления метрик, связанных с аппаратным обеспечением и ядром, в зависимости от отслеживаемого вами сервиса, наиболее распространенным из которых является node-exporter. Экспортеры устанавливаются на хостах, за которыми нужно следить. Также целью создания стека Prometheus/Grafana является мониторинг других сервисов, работающих, возможно, на разных серверах. Prometheus использует разные экспортеры для предоставления метрик, связанных с аппаратным обеспечением и ядром, в зависимости от отслеживаемого вами сервиса, наиболее распространенным из которых является node-exporter. Экспортеры устанавливаются на хостах, за которыми нужно следить.
Поскольку у меня нет другого внешнего сервера, я собираюсь установить экспортер узлов на локальном компьютере. Для этого в конец файла _~/prometheus-grafana/docker-compose.yml_ добавляем: Поскольку у меня нет другого внешнего сервера, я собираюсь установить экспортер узлов на локальном компьютере. Для этого в конец файла ~/prometheus-grafana/docker-compose.yml добавляем:
node-exporter: node-exporter:
@ -220,31 +190,28 @@ restart: unless-stopped
expose: expose:
- 9100 9100
Также я должен обновить файл prometheus.yml, чтобы добавить node-exporter в качестве цели. Также я должен обновить файл prometheus.yml, чтобы добавить node-exporter в качестве цели.
static_configs: static_configs:
- targets: ['localhost:9090','node-exporter:9100'] targets: ['localhost:9090','node-exporter:9100']
Или формат: Или формат:
static_configs: static_configs:
- targets: targets:
- localhost:9090 localhost:9090
- node-exporter:9100 node-exporter:9100
Если у вас есть другие экспортеры из других сервисов, вы можете добавить в массив по подобию. Если у вас есть другие экспортеры из других сервисов, вы можете добавить в массив по подобию.
### Запуск контейнеров с помощью docker-compose Запуск контейнеров с помощью docker-compose
Перейдите в каталог данных: Перейдите в каталог данных:
cd ~/prometheus-grafana<code></code> cd ~/prometheus-grafana
Теперь все готово для запуска наших контейнеров. Чтобы запустить контейнеры, выполните команду, как показано ниже: Теперь все готово для запуска наших контейнеров. Чтобы запустить контейнеры, выполните команду, как показано ниже:
@ -254,14 +221,12 @@ docker compose up -d
docker compose ps docker compose ps
Получите доступ к Prometheus и grafana из браузера, используя порты по умолчанию. Для Прометея мы используем _`http://serverip_or_hostname:9090`_. Если вы перейдете к **status** -> target , вы сможете увидеть статус своих целей, как показано ниже **_:_** Получите доступ к Prometheus и grafana из браузера, используя порты по умолчанию. Для Прометея мы используем http://serverip_or_hostname:9090. Если вы перейдете к status -> target , вы сможете увидеть статус своих целей, как показано ниже :
![](https://techviewleo.com/wp-content/uploads/2021/03/How-to-run-prometheus-and-grafana-with-docker-compose.png?ezimgfmt=rs:640x143/rscb7/ng:webp/ngcb7)
Для Grafana зайдите `http://serverip_or_hostname:3000`и войдите в систему, используя имя пользователя и пароль, указанные в `.ini` файле конфигурации. Учетные данные по умолчанию: _admin:admin_
![](https://techviewleo.com/wp-content/uploads/2021/03/How-to-run-prometheus-and-grafana-with-docker-compose-1.png?ezimgfmt=rs:640x214/rscb7/ng:webp/ngcb7) Для Grafana зайдите http://serverip_or_hostname:3000и войдите в систему, используя имя пользователя и пароль, указанные в .ini файле конфигурации. Учетные данные по умолчанию: admin:admin
Теперь вы можете продолжить и создать информационную панель для мониторинга. Одна вещь, которую я отметил, заключается в том, что я не мог получить метрики для использования при создании графиков, когда «доступ» в разделе «HTTP» источников данных был установлен на «сервер». Мне пришлось установить его как «браузер», как показано ниже:
![](https://techviewleo.com/wp-content/uploads/2021/03/How-to-run-prometheus-and-grafana-with-docker-compose-4.png?ezimgfmt=rs:640x326/rscb7/ng:webp/ngcb7)
Теперь вы можете продолжить и создать информационную панель для мониторинга. Одна вещь, которую я отметил, заключается в том, что я не мог получить метрики для использования при создании графиков, когда «доступ» в разделе «HTTP» источников данных был установлен на «сервер». Мне пришлось установить его как «браузер», как показано ниже:

@ -0,0 +1,3 @@
# Prometheus
Prometheus — это база данных временных рядов, использующая экспортеры для мониторинга различных серверов/сервисов

@ -0,0 +1,47 @@
```yaml title="docker-compose.yml"
version: "3.7"
services:
## Handbrake - Video Converter
handbrake:
container_name: handbrake
image: jlesage/handbrake:latest
restart: always
networks:
- traefik_proxy
# ports:
# - "5800:5800"
security_opt:
- no-new-privileges:true
volumes:
- $USERDIR/docker/handbrake/config:/config:rw
- $USERDIR/docker/handbrake/watch:/watch:rw # Watch folder
- $USERDIR/docker/handbrake/output:/output:rw # Output folder
- /mnt/storage:/storage:ro # Data folder - can be anything
- $USERDIR/dwnloads:/downloads:ro # Data folder - can be anything
environment:
- USER_ID=$PUID
- GROUP_ID=$PGID
- TZ=$TZ
- UMASK=002
- DISPLAY_WIDTH=1600
- DISPLAY_HEIGHT=768
# - AUTOMATED_CONVERSION_PRESET=H.265 MKV 480p30
- AUTOMATED_CONVERSION_PRESET=H.265 MKV 1080p30
- AUTOMATED_CONVERSION_FORMAT=mkv
labels:
- "traefik.enable=true"
## HTTP Routers
- "traefik.http.routers.handbrake-rtr.entrypoints=https"
- "traefik.http.routers.handbrake-rtr.rule=Host(`handbrake.$DOMAINNAME`)"
## Middlewares
- "traefik.http.routers.handbrake-rtr.middlewares=secure-chain@file"
## HTTP Services
- "traefik.http.routers.handbrake-rtr.service=handbrake-svc"
- "traefik.http.services.handbrake-svc.loadbalancer.server.port=5800"
networks:
traefik_proxy:
external: true
```

@ -0,0 +1,60 @@
# Homarr - дашборд для быстрого доступа к сервисам.
[![](https://img.shields.io/github/stars/ajnart/homarr?label=%E2%AD%90%20Stars&style=flat-square)](https://github.com/ajnart/homarr)
[![](https://img.shields.io/github/v/release/ajnart/homarr?label=%F0%9F%9A%80%20Release&style=flat-square)](https://github.com/ajnart/homarr/releases/latest)
[![](https://img.shields.io/badge/Demo-purple)](https://demo.homarr.dev/ru)
Современная панель управления домашней лабой. Позволяет видеть все, что поднято.
![](../images/docker/homarr.png)
## Запуск через Docker
Запуск простой, через docker:
```bash
docker run \
--name homarr \
--restart unless-stopped \
-p 7575:7575 \
-v <your-path>/homarr/configs:/app/data/configs \
-v <your-path>/homarr/icons:/app/public/icons \
-d ghcr.io/ajnart/homarr:latest
```
После, открываем [http://localhost:7575/](http://localhost:7575) в браузере и пользуемся.
## Запуск через Docker-Compose
Надо создать файл docker-compose.yml и вставить следующий код:
```yaml title="docker-compose.yml"
version: '3.9'
homarr:
container_name: homarr
image: ghcr.io/ajnart/homarr:latest
restart: unless-stopped
volumes:
- ./homarr/configs:/app/data/configs
- ./homarr/icons:/app/public/icons
- ./homarr/img:/app/public/img
ports:
- 7575:7575
- EDIT_MODE_PASSWORD='strong_password'
```
Затем, запускаем через `docker-compose up -d ` находясь в той же папке, где файл.
## Возможности
- 🖌️ Широкие возможности настройки благодаря обширной системе перетаскивания сетки.
- ✨ Легко интегрируется с вашими любимыми автономными приложениями.
- 📌 Простое и быстрое управление приложениями — без использования YAML
- 🙊 Усовершенствованная система управления секретами для повышения безопасности
- 📄 Подробная документация и активное сообщество
- 🔍 Мгновенный поиск в Интернете или поддерживаемых интеграциях.
- 🏴 Football Football Result Следите за своей заявкой с помощью встроенной системы статуса.
- 🦞 Комплексный встроенный инструмент выбора значков, содержащий более 7000 значков.
- 🐳 Простое развертывание с помощью Docker, unRAID и Synology.
- 🚀 Совместимость с любым основным потребительским оборудованием (x86, Raspberry Pi, старые ноутбуки и т. д.)
- 💵 Бесплатность и открытый исходный код — ваши данные остаются на вашем устройстве. Нет данных телеметрии.

@ -0,0 +1,27 @@
# Homepage
[![](https://img.shields.io/github/stars/gethomepage/homepage?label=%E2%AD%90%20Stars&style=flat-square)](https://github.com/gethomepage/homepage)
[![](https://img.shields.io/github/v/release/gethomepage/homepage?label=%F0%9F%9A%80%20Release&style=flat-square)](https://github.com/gethomepage/homepage/releases/latest)
Современная, полностью статичная, быстрая, безопасная, полностью прокси-серверная, легко настраиваемая панель управления приложениями с интеграцией более чем 100 сервисов и переводом на несколько языков. Легко настраивается с помощью файлов YAML или с помощью обнаружения меток Docker.
![](../images/docker/homepage-1.png)
## Запуск через Docker Compose
```yaml
version: "3.3"
services:
homepage:
image: ghcr.io/gethomepage/homepage:latest
container_name: homepage
environment:
PUID: 1000 #-- optional, your user id
PGID: 1000 #-- optional, your group id
ports:
- 3000:3000
volumes:
- /path/to/config:/app/config # Make sure your local config directory exists
- /var/run/docker.sock:/var/run/docker.sock:ro # optional, for docker integrations
restart: unless-stopped
```

@ -6,15 +6,26 @@ Docker , также известный как Docker Engine, представл
На материнских платах AMD AMD-V включен по умолчанию. Однако на материнских платах Intel вам нужно будет вручную включить VT-x из BIOS/UEFI. На материнских платах AMD AMD-V включен по умолчанию. Однако на материнских платах Intel вам нужно будет вручную включить VT-x из BIOS/UEFI.
!!! tip "Скрипт для автоустановки Docker и Docker Compose"
```bash
curl -fsSL get.docker.com | sh
```
Установится последняя версия. После этого, дальнейшие шаги можно не делать.
## Шаг 1. Обновите и установите зависимости Docker ## Шаг 1. Обновите и установите зависимости Docker
Во-первых, давайте обновим список наших пакетов и установим необходимые зависимости Docker. Во-первых, давайте обновим список наших пакетов и установим необходимые зависимости Docker.
`sudo apt update` ```bash
sudo apt update
```
Затем используйте следующую команду для установки зависимостей или необходимых пакетов. Затем используйте следующую команду для установки зависимостей или необходимых пакетов.
`sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release` ```bash
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release
```
## Шаг 2. Добавьте репозиторий Docker в источники APT ## Шаг 2. Добавьте репозиторий Docker в источники APT
@ -59,7 +70,9 @@ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin
Есть много способов проверить, работает ли Docker в Ubuntu. Один из способов — использовать следующую команду: Есть много способов проверить, работает ли Docker в Ubuntu. Один из способов — использовать следующую команду:
`sudo systemctl status docker` ```bash
sudo systemctl status docker
```
Вы должны увидеть вывод, который говорит, что активен для статуса. Вы должны увидеть вывод, который говорит, что активен для статуса.
@ -67,19 +80,29 @@ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin
Для запуска контейнеров Docker и управления ими требуются привилегии sudo. Это означает, что вам придется вводить sudo для каждой команды или переключаться на учетную запись пользователя root. Но вы можете обойти это, добавив текущего пользователя в группу **докеров** с помощью следующей команды: Для запуска контейнеров Docker и управления ими требуются привилегии sudo. Это означает, что вам придется вводить sudo для каждой команды или переключаться на учетную запись пользователя root. Но вы можете обойти это, добавив текущего пользователя в группу **докеров** с помощью следующей команды:
`sudo usermod -aG docker ${USER}` ```bash
sudo usermod -aG docker ${USER}
```
Вы можете заменить **${USER}** своим именем пользователя или просто запустить команду как есть, пока вы вошли в систему. Вы можете заменить **${USER}** своим именем пользователя или просто запустить команду как есть, пока вы вошли в систему.
Хотя это может быть незначительным риском для безопасности, все должно быть в порядке, если применяются другие [меры безопасности Docker](https://www.smarthomebeginner.com/traefik-docker-security-best-practices/). Хотя это может быть незначительным риском для безопасности, все должно быть в порядке, если применяются другие [меры безопасности Docker](https://www.smarthomebeginner.com/traefik-docker-security-best-practices/).
`sudo timedatectl set-timezone America/New\_York` ## Шаг 6. Установим таймзону
Установим таймзону, чтобы в будущем было удобнее использовать. По умолчанию, установлена таймзона UTC+0. Поставим Московскую:
```bash
sudo timedatectl set-timezone Europa/Moscow
timedatectl status
```
# Команды Docker # Команды Docker
Существует множество команд docker и docker compose, и их описание не является целью этого поста. Вы можете увидеть все возможные команды, используя следующую команду: Существует множество команд docker и docker compose, и их описание не является целью этого поста. Вы можете увидеть все возможные команды, используя следующую команду:
`docker` ```bash
docker
```
Но вот несколько команд **docker** и **docker compose** для начала: Но вот несколько команд **docker** и **docker compose** для начала:

@ -1,69 +1,54 @@
[Self-hosted файл/медиа хостинг.](https://github.com/ZizzyDizzyMC/linx-server/) # Linx - свой хостинг для картинок, гифок, видяшек и документов.
## Демо [![](https://img.shields.io/docker/pulls/andreimarcu/linx-server?color=brightgreen)](https://hub.docker.com/r/andreimarcu/linx-server)
[![](https://img.shields.io/github/stars/andreimarcu/linx-server.svg?label=Stars&style=social)](https://github.com/andreimarcu/linx-server)
[![](https://img.shields.io/badge/Demo-purple)](https://put.icu/)
Как выглядит, можно посмотреть на: [https://put.icu/](https://put.icu/) Таких сервисов много, это лиш один из них. Позводяет захостить у себя сервис по хранению и выдаче различных медия. Аля imgur.
### Клиенты ## Запуск
| | | |
| --- | --- | --- |
| Официальный | CLI: **linx-client** | [Source](https://github.com/andreimarcu/linx-client) |
| Не официальный | Android: **LinxShare** | [Source](https://github.com/iksteen/LinxShare/) \| [Google Play](https://play.google.com/store/apps/details?id=org.thegraveyard.linxshare) |
| CLI: **golinx** | [Source](https://github.com/mutantmonkey/golinx) |
## Features
- Отображение базовых типов файлов (картинки, видео, аудио, markdown, pdf)
- Отображение подсветки кода во строенном редакторе
- API для работы. С документацией
- Скачивание торрентов
- Установка срока действия файлов и ссылок, удаление ключей, рандомные имена файлов
## Screenshots
| | | |
| --- | --- | --- |
| ![](https://user-images.githubusercontent.com/4650950/76579039-03c82680-6488-11ea-8e23-4c927386fbd9.png) | ![](https://user-images.githubusercontent.com/4650950/76578903-771d6880-6487-11ea-8baf-a4a23fef4d26.png) | ![](https://user-images.githubusercontent.com/4650950/76578910-7be21c80-6487-11ea-9a0a-587d59bc5f80.png) |
| ![](https://user-images.githubusercontent.com/4650950/76578908-7b498600-6487-11ea-8994-ee7b6eb9cdb1.png) | ![](https://user-images.githubusercontent.com/4650950/76578907-7b498600-6487-11ea-8941-8f582bf87fb0.png) | |
## Начало
1. Создать папки `files` и `meta` и запустить `chown -R 65534:65534 meta && chown -R 65534:65534 files` 1. Создать папки `files` и `meta` и запустить `chown -R 65534:65534 meta && chown -R 65534:65534 files`
2. Создайте файл конфигурации (пример предоставлен в репозитории), мы будем называть его **linx-server.conf** в следующих примерах. 2. Создайте файл конфигурации (пример предоставлен в репозитории), мы будем называть его **linx-server.conf** в следующих примерах.
Пример: === "Docker"
``` ```bash
docker run -p 8080:8080 -v /path/to/linx-server.conf:/data/linx-server.conf -v /path/to/meta:/data/meta -v /path/to/files:/data/files andreimarcu/linx-server -config /data/linx-server.conf docker run andreimarcu/linx-server \
-p 8080:8080 \
-v /path/to/linx-server.conf:/data/linx-server.conf \
-v /path/to/meta:/data/meta \
-v /path/to/files:/data/files \
-config /data/linx-server.conf
``` ```
Пример с docker-compose === "Docker Compose"
```yaml ```yaml title="docker-compose.yaml"
version: "3.7" version: "3.9"
service:
# linx - self-hosting picture and data # linx - self-hosting picture and data
linx: linx:
container_name: linx-server container_name: linx-server
image: andreimarcu/linx-server image: andreimarcu/linx-server
command: -config /data/linx-server.conf command: -config /data/linx-server.conf
volumes: volumes:
- $DOCKER_APP/linx/files:/data/files - ./linx/files:/data/files
- $DOCKER_APP/linx/meta:/data/meta - ./linx/meta:/data/meta
- $DOCKER_APP/linx/linx-server.conf:/data/linx-server.conf - ./linx/linx-server.conf:/data/linx-server.conf
networks:
- direct_net
environment: environment:
PUID: $PUID PUID: 1000
PGID: $PGID PGID: 1000
ports: ports:
- "8090:8080" - "8080:8080"
restart: unless-stopped restart: unless-stopped
``` ```
В идеале вы должны использовать обратный прокси-сервер, такой как nginx, traefik или caddy, для обработки сертификатов TLS. ## Возможности
## Автор - Отображение базовых типов файлов (картинки, видео, аудио, markdown, pdf)
- Отображение подсветки кода во строенном редакторе
Andrei Marcu, [https://andreim.net/](https://andreim.net/) - API для работы. С документацией
- Скачивание торрентов
- Установка срока действия файлов и ссылок, удаление ключей, рандомные имена файлов

@ -0,0 +1,23 @@
# MariaDB
```yaml
services:
mariadb:
container_name: mariadb
image: mariadb:latest #11.5.2
restart: unless-stopped
stop_grace_period: 5s
security_opt: # see https://github.com/MariaDB/mariadb-docker/issues/434#issuecomment-1136151239
- seccomp:unconfined
- apparmor:unconfined
command: --innodb-buffer-pool-size=512M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
volumes:
- "./database:/var/lib/mysql"
environment:
MARIADB_AUTO_UPGRADE: "1"
MARIADB_INITDB_SKIP_TZINFO: "1"
MARIADB_DATABASE: "name_db"
MARIADB_USER: "username"
MARIADB_PASSWORD: "pass_user"
MARIADB_ROOT_PASSWORD: "root_pass"
```

@ -0,0 +1,10 @@
# Настройка cron
запустить редактор crontab
```
crontab -e
```
В редакторе добавляем:
```
*/5 * * * * docker exec -u www-data nextcloud php cron.php
```

@ -1,42 +1,31 @@
```env # Nextcloud - свое облако для файлов
Запуск через docker-compose. Для начала создадим файл `.env` со следующим содержанием:
```env title=".env"
PUID= PUID=
PGID= PGID=
TZ= TZ=
DOCKER_APP=
SECRETSDIR=
NEXTCLOUD_DOMAIN_NAME= NEXTCLOUD_DOMAIN_NAME=
REDIS_PASSWORD= REDIS_PASSWORD=
``` ```
docker-compose.yml Далее создаем файл `docker-compose.yml`
```yaml ```yaml title="docker-compose.yml"
version: "3.7" version: "3.7"
secrets:
nextcloud_admin_password:
file: $SECRETSDIR/nextcloud_admin_password # put admin password in this file
nextcloud_admin_user:
file: $SECRETSDIR/nextcloud_admin_user # put admin username in this file
nextcloud_postgres_db:
file: $SECRETSDIR/nextcloud_postgres_db # put postgresql db name in this file
nextcloud_postgres_password:
file: $SECRETSDIR/nextcloud_postgres_password # put postgresql password in this file
nextcloud_postgres_user:
file: $SECRETSDIR/nextcloud_postgres_user # put postgresql username in this file
services: services:
# Nextcloud Docker Application # Nextcloud Docker Application
nextcloud: nextcloud:
image: nextcloud:25.0.4 image: nextcloud:28
container_name: nextcloud container_name: nextcloud
restart: always restart: always
volumes: volumes:
- $DOCKER_APP/nextcloud:/var/www/html - ./nextcloud:/var/www/html
- $DOCKER_APP/nextcloud/apps:/var/www/html/custom_apps - ./nextcloud/apps:/var/www/html/custom_apps
- $DOCKER_APP/nextcloud/config:/var/www/html/config - ./nextcloud/config:/var/www/html/config
- /mnt/NAS/Nextcloud:/var/www/html/data - ./nextcloud/data:/var/www/html/data
- /mnt:/mnt
environment: environment:
- POSTGRES_HOST=192.168.1.12 - POSTGRES_HOST=192.168.1.12
- POSTGRES_DB_FILE=/run/secrets/nextcloud_postgres_db - POSTGRES_DB_FILE=/run/secrets/nextcloud_postgres_db
@ -44,20 +33,14 @@ services:
- POSTGRES_PASSWORD_FILE=/run/secrets/nextcloud_postgres_password - POSTGRES_PASSWORD_FILE=/run/secrets/nextcloud_postgres_password
- NEXTCLOUD_ADMIN_PASSWORD_FILE=/run/secrets/nextcloud_admin_password - NEXTCLOUD_ADMIN_PASSWORD_FILE=/run/secrets/nextcloud_admin_password
- NEXTCLOUD_ADMIN_USER_FILE=/run/secrets/nextcloud_admin_user - NEXTCLOUD_ADMIN_USER_FILE=/run/secrets/nextcloud_admin_user
- REDIS_HOST=172.18.3.249 #- REDIS_HOST=
- REDIS_HOST_PASSWORD=$REDIS_PASSWORD #- REDIS_HOST_PASSWORD=
- PUID=$PUID - PUID=$PUID
- PGID=$PGID - PGID=$PGID
- TZ=$TZ - TZ=$TZ
- NEXTCLOUD_TRUSTED_DOMAIN=$NEXTCLOUD_DOMAIN_NAME - NEXTCLOUD_TRUSTED_DOMAIN=$NEXTCLOUD_DOMAIN_NAME
- TRUSTED_PROXIES=172.18.0.253 - TRUSTED_PROXIES=172.18.0.253
- OVERWRITEPROTOCOL=https - OVERWRITEPROTOCOL=https
secrets:
- nextcloud_admin_password
- nextcloud_admin_user
- nextcloud_postgres_db
- nextcloud_postgres_password
- nextcloud_postgres_user
labels: labels:
- com.centurylinklabs.watchtower.enable=False - com.centurylinklabs.watchtower.enable=False
``` ```

@ -0,0 +1,12 @@
# occ files-scan
Запуск команды occ. иногда бывает так, что веб интерфейс выдает ошибку или предупреждение о необходимости выполнить сканировние, используя `occ`. При установе вне докера, ясно как это сделать - запустить то что указано в предупреждении, используя терминал. Но при работе в докере, нужно запускать команду, используя контейнер докера.
Например:
```bash
sudo docker exec -ti --user www-data nextcloud-app /var/www/html/occ files:scan --all
```
- `nextcloud-app` - имя контейнера докера
- `/var/www/html/occ` - путь до **occ**

@ -0,0 +1,12 @@
# OIDC логин через Authentik
Добавил авторизацию через Authentik, но потребовалось сделать так, чтобы формы входа не было. Чтобы сразу шел редирект на страницу авторизации Authentik.
Для этого нужно выолпнить команду (nextcloud в докере):
```
docker exec -ti --user 1000 nextcloud_app php occ config:app:set --value=0 user_oidc allow_multiple_user_backends
```
где `nextcloud_app` - имя контейнера
Применимо только для приложения nextcloud: **user_oidc** (https://github.com/nextcloud/user_oidc)

@ -2,7 +2,7 @@
При использовании официального Nextcloud образа Docker вы увидите сообщение вроде: При использовании официального Nextcloud образа Docker вы увидите сообщение вроде:
![](../images/docker/nextcloud-docker-php-imagick.png) ![](../../images/docker/nextcloud-docker-php-imagick.png)
Чтобы исправить это предупреждение в docker нужно установить пакет `libmagickcore-6.q16-6-extra`: Чтобы исправить это предупреждение в docker нужно установить пакет `libmagickcore-6.q16-6-extra`:

@ -0,0 +1,15 @@
# Проблемы с доступом после перемещения `data`
Иногда так бывает, что при переносе `data` папки используя [инструкцию](https://help.nextcloud.com/t/howto-change-move-data-directory-after-installation/17170) возникают проблемы.
Одна из них - не возможность удалять или добавлять новые файлы.
При выполнении команды `sudo -u www-data php -f /var/www/html/nextcloud/console.php files:scan --all`, будет выходить ошибка: `Exception: Environment not properly prepared.`
## Решение
Ошибка идет из-за того, что неверно выданы права на папку `data`. Права должны быть у юзера `www-data`:
```bash
chown -R www-data:www-data /path/to/nextcloud
find /path/to/nextcloud/ -type d -exec chmod 750 {} \;
find /path/to/nextcloud/ -type f -exec chmod 640 {} \;
```

@ -0,0 +1,150 @@
# Photoprism
[![](https://img.shields.io/github/stars/Prowlarr/Prowlarr?label=%E2%AD%90%20Stars&style=flat-square)](https://github.com/photoprism/photoprism)
[![](https://img.shields.io/github/v/release/Prowlarr/Prowlarr?label=%F0%9F%9A%80%20Release&style=flat-square)](https://github.com/photoprism/photoprism/releases/latest)
[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/prowlarr.svg?maxAge=60&style=flat-square)](https://hub.docker.com/r/photoprism/photoprism)
PhotoPrism® — это приложение для фотографий на базе искусственного интеллекта для [децентрализованной сети](https://en.wikipedia.org/wiki/Decentralized_web). Он использует новейшие технологии для автоматического пометки и поиска изображений, не мешая вам. Вы можете запустить его дома, на частном сервере или в облаке.
![](../images/docker/photoprism.png)
Чтобы получить первое впечатление, можно поиграться в [демо-версию](https://try.photoprism.app/).
## Установка
Устанавливать будем через Docker. Как обычно.
!!! tip
Настройка докера описывается в статье: [Установка Docker](install.md)
Создаем файл `docker-compose.yml`, используя команду:
```bash
nano docker-compose.yml
```
Заполняем новый файл:
```yaml
version: "3.7"
services:
photoprism:
container_name: photoprism
image: photoprism/photoprism:latest
restart: unless-stopped
stop_grace_period: 10s
depends_on:
- mariadb
security_opt:
- seccomp:unconfined
- apparmor:unconfined
ports:
- "2342:2342"
environment:
PHOTOPRISM_ADMIN_USER: $PHOTOPRISM_ADMIN_USER # admin login username
PHOTOPRISM_ADMIN_PASSWORD: $PHOTOPRISM_ADMIN_PASSWORD # initial admin password (8-72 characters)
PHOTOPRISM_AUTH_MODE: "password" # authentication mode (public, password)
PHOTOPRISM_SITE_URL: $PHOTOPRISM_SITE_URL # server URL in the format "http(s)://domain.name(:port)/(path)"
PHOTOPRISM_DISABLE_TLS: "false" # disables HTTPS/TLS even if the site URL starts with https:// and a certificate is available
PHOTOPRISM_DEFAULT_TLS: "true" # defaults to a self-signed HTTPS/TLS certificate if no other certificate is available
PHOTOPRISM_ORIGINALS_LIMIT: 5000 # file size limit for originals in MB (increase for high-res video)
PHOTOPRISM_HTTP_COMPRESSION: "gzip" # improves transfer speed and bandwidth utilization (none or gzip)
PHOTOPRISM_LOG_LEVEL: "info" # log level: trace, debug, info, warning, error, fatal, or panic
PHOTOPRISM_READONLY: "false" # do not modify originals directory (reduced functionality)
PHOTOPRISM_EXPERIMENTAL: "false" # enables experimental features
PHOTOPRISM_DISABLE_CHOWN: "false" # disables updating storage permissions via chmod and chown on startup
PHOTOPRISM_DISABLE_WEBDAV: "false" # disables built-in WebDAV server
PHOTOPRISM_DISABLE_SETTINGS: "false" # disables settings UI and API
PHOTOPRISM_DISABLE_TENSORFLOW: "false" # disables all features depending on TensorFlow
PHOTOPRISM_DISABLE_FACES: "false" # disables face detection and recognition (requires TensorFlow)
PHOTOPRISM_DISABLE_CLASSIFICATION: "false" # disables image classification (requires TensorFlow)
PHOTOPRISM_DISABLE_VECTORS: "false" # disables vector graphics support
PHOTOPRISM_DISABLE_RAW: "false" # disables indexing and conversion of RAW images
PHOTOPRISM_RAW_PRESETS: "false" # enables applying user presets when converting RAW images (reduces performance)
PHOTOPRISM_JPEG_QUALITY: 85 # a higher value increases the quality and file size of JPEG images and thumbnails (25-100)
PHOTOPRISM_DETECT_NSFW: "false" # automatically flags photos as private that MAY be offensive (requires TensorFlow)
PHOTOPRISM_UPLOAD_NSFW: "true" # allows uploads that MAY be offensive (no effect without TensorFlow)
# PHOTOPRISM_DATABASE_DRIVER: "sqlite" # SQLite is an embedded database that doesn't require a server
PHOTOPRISM_DATABASE_DRIVER: "mysql" # use MariaDB 10.5+ or MySQL 8+ instead of SQLite for improved performance
PHOTOPRISM_DATABASE_SERVER: "mariadb:3306" # MariaDB or MySQL database server (hostname:port)
PHOTOPRISM_DATABASE_NAME: "photoprism" # MariaDB or MySQL database schema name
PHOTOPRISM_DATABASE_USER: "photoprism" # MariaDB or MySQL database user name
PHOTOPRISM_DATABASE_PASSWORD: $MARIADB_PASSWORD # MariaDB or MySQL database user password
PHOTOPRISM_SITE_CAPTION: "AI-Powered Photos App"
PHOTOPRISM_SITE_DESCRIPTION: "" # meta site description
PHOTOPRISM_SITE_AUTHOR: "" # meta site author
## Video Transcoding (https://docs.photoprism.app/getting-started/advanced/transcoding/):
# PHOTOPRISM_FFMPEG_ENCODER: "software" # H.264/AVC encoder (software, intel, nvidia, apple, raspberry, or vaapi)
# PHOTOPRISM_FFMPEG_SIZE: "1920" # video size limit in pixels (720-7680) (default: 3840)
# PHOTOPRISM_FFMPEG_BITRATE: "32" # video bitrate limit in Mbit/s (default: 50)
## Run/install on first startup (options: update https gpu tensorflow davfs clitools clean):
# PHOTOPRISM_INIT: "https gpu tensorflow"
## Run as a non-root user after initialization (supported: 0, 33, 50-99, 500-600, and 900-1200):
# PHOTOPRISM_UID: 1000
# PHOTOPRISM_GID: 1000
# PHOTOPRISM_UMASK: 0000
user: "1000:1000"
working_dir: "/photoprism" # do not change or remove
## Storage Folders: "~" is a shortcut for your home directory, "." for the current directory
volumes:
# "/host/folder:/photoprism/folder" # Example
- ./photoprism/originals:/photoprism/originals
- ./photoprism/storage:/photoprism/storage
- ./photoprism/import:/photoprism/import
# - "/example/family:/photoprism/originals/family" # *Additional* media folders can be mounted like this
## Database Server (recommended)
## see https://docs.photoprism.app/getting-started/faq/#should-i-use-sqlite-mariadb-or-mysql
mariadb:
container_name: mariadb
image: mariadb:11
## If MariaDB gets stuck in a restart loop, this points to a memory or filesystem issue:
## https://docs.photoprism.app/getting-started/troubleshooting/#fatal-server-errors
restart: unless-stopped
stop_grace_period: 5s
security_opt: # see https://github.com/MariaDB/mariadb-docker/issues/434#issuecomment-1136151239
- seccomp:unconfined
- apparmor:unconfined
command: --innodb-buffer-pool-size=512M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
## Never store database files on an unreliable device such as a USB flash drive, an SD card, or a shared network folder:
volumes:
- "./database:/var/lib/mysql" # DO NOT REMOVE
environment:
MARIADB_AUTO_UPGRADE: "1"
MARIADB_INITDB_SKIP_TZINFO: "1"
MARIADB_DATABASE: "photoprism"
MARIADB_USER: "photoprism"
MARIADB_PASSWORD: $MARIADB_PASSWORD
MARIADB_ROOT_PASSWORD: $MARIADB_ROOT_PASSWORD
```
Создаем файл, где будут описаны переменные:
```bash
cp .env
```
Нужно заполнить его:
```
PHOTOPRISM_ADMIN_USER=admin # Имя админа
PHOTOPRISM_ADMIN_PASSWORD=password # пароль админа
PHOTOPRISM_SITE_URL=http://site.name # URL сайта, для доступа
MARIADB_ROOT_PASSWORD=strong-password # Пароль root от БД mariadb
MARIADB_PASSWORD=strong-password1 # Пароль от юзера photoprism БД
```
## Проблемы
Если после обновления, пропали фотки. Или идет цикличная загрузка по кругу, то лучше всего снести БД и восстановится на чистую.
Порядок действий таков:
1. Сносим текущую БД
2. Ставим новую БД с настройками старой
3. Перезапускаем призму
4. В терминале вводим: `docker compose exec photoprism photoprism restore -i`
Должно получится.
Можно и без команды, но тогда не вернутся текущие фотки.

@ -0,0 +1,34 @@
# Pictshare - свой хостинг для картинок, гифок, видяшек и документов.
[![](https://img.shields.io/docker/pulls/hascheksolutions/pictshare?color=brightgreen)](https://hub.docker.com/r/hascheksolutions/pictshare)
[![Apache License](https://img.shields.io/badge/license-Apache-brightgreen.svg?style=flat)](https://github.com/HaschekSolutions/pictshare/blob/master/LICENSE)
[![](https://img.shields.io/github/stars/HaschekSolutions/pictshare.svg?label=Stars&style=social)](https://github.com/HaschekSolutions/pictshare)
Таких сервисов много, это лиш один из них. Позводяет захостить у себя сервис по хранению и выдаче различных медия. Аля imgur.
## Запуск
Запуск простой, через docker:
```bash
docker run -d -p 8080:80 -e "TITLE=My own PictShare" -e "URL=http://localhost/" hascheksolutions/pictshare:2
```
После, открываем [http://localhost:8080/](http://localhost:8080) в браузере и пользуемся.
## Возможности
- Selfhostable
- [Простая загрузка через API](https://github.com/HaschekSolutions/pictshare/blob/master/rtfm/API.md)
- Без БД
- [Масштабируемость](https://github.com/HaschekSolutions/pictshare/blob/master/rtfm/SCALING.md)
- Фильтры для картинок
- GIF в MP4 преобразование
- JPG, PNG в WEBP преобразование
- MP4 смена размера
- PictShare удаляет все данные exif, чтобы вы могли загружать фотографии со своего телефона, при этом все теги GPS и информация о модели камеры будут удалены.
- Изменяйте и изменяйте размеры своих изображений и видео, просто отредактировав URL-адрес.
- Дубликаты не занимают места. Если один и тот же файл загружается дважды, вторая загрузка будет связана с первой.
- [Много возможностей для настройки](https://github.com/HaschekSolutions/pictshare/blob/master/rtfm/CONFIG.md)
- Полный контроль над вашими данными. Удаление изображений с индивидуальными и глобальными кодами удаления

@ -1,186 +0,0 @@
Plex Meta Managers
.env файл
```
PUID=1000
PGID=1000
TZ="Asia/Yekaterinburg"
DOCKER_APP="/opt/appdata"
```
``` yaml
plexmm-films:
image: lscr.io/linuxserver/plex-meta-manager:latest
container_name: plexmm-films
restart: "no"
networks:
- direct_net
security_opt:
- no-new-privileges:true
environment:
TZ: $TZ
PUID: $PUID
PGID: $PGID
PMM_CONFIG: /config/config.yml #optional
PMM_TIME: 03:00 #optional
PMM_RUN: "True" #optional
PMM_TEST: "False" #optional
PMM_NO_MISSING: "False" #optional
volumes:
- $DOCKER_APP/plexmm/films:/config
```
конфиг файл в папке $DOCKER_APP/plexmm/films
config.yml
```yaml
## This file is a template remove the .template to use the file
libraries:
Фильмы:
metadata_path:
- file: config/Movies/Genre.yml
- file: config/Movies/Studio.yml
- folder: config/Movies/Collections
- folder: config/Movies/Metadata/Collections
- pmm: basic
- pmm: imdb
- pmm: franchise
overlay_path:
- remove_overlays: false
- reapply_overlay: false
- pmm: resolution
- pmm: commonsense
- pmm: ratings
template_variables:
rating1: critic
rating1_image: imdb
rating2: audience
rating2_image: trakt
rating3: user
rating3_image: tmdb
horizontal_position: right
operations:
mass_critic_rating_update: imdb
mass_audience_rating_update: mdb_trakt
mass_user_rating_update: tmdb
playlist_files:
- pmm: playlist
settings:
cache: true
cache_expiration: 60
asset_directory: config/assets
asset_folders: true
asset_depth: 0
create_asset_folders: false
prioritize_assets: false
dimensional_asset_rename: false
download_url_assets: false
show_missing_season_assets: false
show_missing_episode_assets: false
show_asset_not_needed: true
sync_mode: append
minimum_items: 1
default_collection_order:
delete_below_minimum: true
delete_not_scheduled: false
run_again_delay: 2
missing_only_released: false
only_filter_missing: false
show_unmanaged: true
show_filtered: false
show_options: false
show_missing: true
show_missing_assets: true
save_report: false
tvdb_language: rus
ignore_ids:
ignore_imdb_ids:
item_refresh_delay: 0
playlist_sync_to_user: all
playlist_report: false
verify_ssl: true
custom_repo:
check_nightly: false
show_unconfigured: true
playlist_exclude_users:
webhooks: # Can be individually specified per library as well
error:
version:
run_start:
run_end:
changes:
delete:
plex: # Can be individually specified per library as well; REQUIRED for the script to run
url: http://
token: token
timeout: 60
clean_bundles: false
empty_trash: false
optimize: false
tmdb: # REQUIRED for the script to run
apikey: api
language: ru
cache_expiration: 60
region:
trakt:
client_id: id
client_secret: secret
pin: pin
authorization:
# everything below is autofilled by the script
access_token:
token_type:
expires_in:
refresh_token:
scope: public
created_at:
```
Для сериалов:
```yaml
Сериалы:
metadata_path:
- file: config/TV-Shows/Collections.yml
- folder: config/TV-Shows/Metadata/Anime
- folder: config/TV-Shows/Metadata/TV
- pmm: basic
- pmm: imdb
overlay_path:
- remove_overlays: false
- reapply_overlay: false
- pmm: ratings
template_variables:
rating1: critic
rating1_image: imdb
rating2: audience
rating2_image: trakt
rating3: user
rating3_image: tmdb
horizontal_position: right
- pmm: resolution
template_variables:
overlay_level: season
- pmm: resolution
template_variables:
overlay_level: episode
- pmm: ratings # 3, 4
template_variables:
rating1: audience
rating1_image: trakt
horizontal_position: right # the set of ratings is on the right of the poster
overlay_level: episode
- pmm: status
template_variables:
font_size: 75
#font: config/fonts/Juventus-Fans-Bold.ttf
back_color: "#262626" # darker
back_width: 1920
back_height: 125
horizontal_align: center
vertical_align: top
vertical_offset: 0
```

@ -1,38 +0,0 @@
Plex можно устанавливать разными способами, через **пакет**, через **docker-cli** и **docker compose**. Я предпочитаю **Docker Compose**.
Ниже будет приведен файл Docker Compose. 
[Получение Plex Claim](https://www.plex.tv/claim/)
```yaml
version: "3.7"
services:
plex:
container_name: plex
image: plexinc/pms-docker:latest
restart: always
#devices:
#- /dev/dri:/dev/dri # для hardware траснкодинга - если есть видеокарта, вписать сюда
ports:
- "32400:32400"
- "32400:32400/udp"
- "32469:32469"
- "32469:32469/udp"
- "5353:5353/udp"
- "1900:1900/udp"
security_opt:
- no-new-privileges:true
volumes:
- /opt/appdata/plex:/config
- /mnt:/mnt:ro # перечислить папки с медиа файлами
environment:
- PUID=1000
- PGID=1000
- VERSION=docker
- PLEX_CLAIM= # ваш плекс клайм
```
Удаление мусора из PhotoTranscoder
```bash
find "/home/plex/plexconfig/Library/Application Support/Plex Media Server/Cache/PhotoTranscoder" -name "*.jpg" -type f -mtime +5 -delete
```

@ -0,0 +1,223 @@
# Autoscan - автоскан для Plex на Go
[![](https://img.shields.io/github/stars/Cloudbox/autoscan?label=%E2%AD%90%20Stars&style=flat-square)](https://github.com/Cloudbox/autoscan)
[![](https://img.shields.io/github/v/release/Cloudbox/autoscan?label=%F0%9F%9A%80%20Release&style=flat-square)](https://github.com/Cloudbox/autoscan/releases/latest)
[![Docker Pulls](https://img.shields.io/docker/pulls/cloudb0x/autoscan.svg?maxAge=60&style=flat-square)](https://hub.docker.com/r/cloudb0x/autoscan/)
Autoscan - заменяет поведение **Plex** и **Emby** по умолчанию для обнаружения изменений в файловой системе. Autoscan интегрируется с **Sonarr**, **Radarr**, **Readarr**, **Lidarr** и **Google Drive** для получения изменений практически в реальном времени, не полагаясь на файловую систему.
!!! note "От автора"
Наткнулся случайно, ища как можно поправить большую нагрузку при сканировании библиотеки в **Plex**. У меня достаточно большая медиа библиотека (1500 фильмов и 30000 серий в сериалах) и во время сканирования изменений, система могла некоторое ремя чуть тормозить. Решение нашлось - **Autoscan**. Он позволяет сделать интеграцию с Sonarr и Radarr, чтобы отслеживать моменты изменения файловой системы. Таким образом, сканирование в основом производится, когда что-то добавилось. Так же скан идет только по той папке, что менялась.
Запускать будем через **Docker Compose**. Предпологается, что [Docker](../install.md) уже установлен. Так же установлен [Plex](index.md). Наличии Radarr и Sonarr опционально.
## Образ Docker
Создаем файл `docker-compose.yml`:
```bash
nano docker-compose.yml
```
Заполняем его:
```yaml title="docker-compose.yml"
version: "3.7"
services:
autoscan:
image: cloudb0x/autoscan
container_name: autoscan
restart: unless-stopped
environment:
- PUID=1001
- PGID=1001
ports:
- 3030:3030
volumes:
- ./autoscan:/config
- /mnt:/mnt:ro #Media Library
```
Запустить можно через:
```bash
docker compose up -d
```
## Конфиг файл
По умолчанию конифг не создается, его нужно создать руками и заполнить параметрами. Ниже представлен пример. А еще ниже описание параметров. Конфиг файл находится по пути: `./autoscan/config.yml`
Создадим его:
```bash
touch ./autoscan/config.yml
```
??? example "Полный файл конфигурации"
```yaml title="config.yml"
# <- processor ->
# override the minimum age to 30 minutes:
minimum-age: 30m
# set multiple anchor files
#anchors:
# - /mnt/unionfs/drive1.anchor
# <- triggers ->
# Protect your webhooks with authentication
authentication:
username: username
password: password
# port for Autoscan webhooks to listen on
port: 3030
triggers:
radarr:
- name: radarr # /triggers/radarr
priority: 2
sonarr:
- name: sonarr # /triggers/sonarr
priority: 2
# Rewrite the path from within the container
# to your local filesystem.
#rewrite:
# - from: /mnt/TV/
# to: /mnt/Media/TV/
targets:
plex:
- url: https://plex.domain.tld # URL of your Plex server
token: XXX # Plex API Token
#rewrite:
# - from: /mnt/ # local file system
# to: / # path accessible by the Plex docker container (if applicable)
```
Типичный конфиг файл состоит из 3 частей:
1. `triggers`
2. `processor`
3. `targets`
### triggers
`triggers` - входные данные для запуска автосканирования. Они переводят входящие данные в общий формат данных, называемый сканированием.
Поддерживается несколько триггеров:
- [A-Train](https://github.com/m-rots/a-train/pkgs/container/a-train) : официальный триггер Google Drive для Autoscan.
- **Inotify**: прослушивает изменения в файловой системе. Его не следует использовать поверх креплений RClone.
- **Вручную**: если вы хотите просканировать путь вручную.
- **-arrs**: Lidarr, Sonarr, Radarr, Readarr - через webhook
#### Настройка triggers
Рассмотрим более подробно настройку триггера через webhook для Sonarr и Radarr.
Чтобы добавить вебхук в **Sonarr**, **Radarr**, **Readarr** или **Lidarr**, выполните следующие действия:
1. Откройте `settings` страницу в Sonarr/Radarr/Readarr/Lidarr.
2. Выберите вкладку `connect`
3. Нажмите на большой плюсик
4. Выбирать `webhook`
5. Используйте `Autoscan` в качестве имени
6. Выберите `On Import` и `On Upgrade`
7. Задайте URL-адрес URL-адреса автосканирования и добавьте, `/triggers/:name` где имя — это имя, заданное в конфигурации триггера.
8. Установите имя пользователя и пароль.
9. Установите события: `Rename`, `On Movie Delete` или `On Series Delete`, `On Movie File Delete` или `On Episode File Delete`
??? example "Пример куска конфига"
```yaml
triggers:
radarr:
- name: radarr # /triggers/radarr
priority: 2
sonarr:
- name: sonarr # /triggers/sonarr
priority: 2
# Rewrite the path from within the container
# to your local filesystem.
#rewrite:
# - from: /mnt/TV/
# to: /mnt/Media/TV/
```
### processor
Триггеры передают полученные сканы процессору. Затем процессор сохраняет сканы в свое хранилище данных. В качестве хранилища данных процессор использует **SQLite**.
Все отправляемые сканы в процессор группируются по одинаковой папке. Далее процессор ждет, пока все файлы в этот папке не станут старше `minimum-age`, по дефолту это 10 минут.
Когда все файлы старше минимального возраста, процессор параллельно вызовет все настроенные цели, чтобы запросить сканирование папки.
#### Настройка processor
Настройка процессора сводится к установке минимального времени сканирования. Есть 3 параметра:
- `minimum-age` - сколько времени пройдет после триггера
- `scan-delay` - задержка между процессами сканирования
- `scan-stats` - вывод статистики
```yaml title="Фрагмент файла config.yml"
...
# override the minimum age to 30 minutes:
minimum-age: 30m
# override the delay between processed scans:
# defaults to 5 seconds
scan-delay: 15s
# override the interval scan stats are displayed:
# defaults to 1 hour / 0s to disable
scan-stats: 1m
...
```
В `minimum-age` полях `scan-delay` и `scan-stats` должна быть указана строка в следующем формате:
- `1s` если минимальный возраст должен быть установлен на 1 секунду.
- `5m` если минимальный возраст должен быть установлен на 5 минут.
- `1m30s` если минимальный возраст должен быть установлен на 1 минуту и 30 секунд.
- `1h` если минимальный возраст должен быть установлен на 1 час.
### targets
targets - это конечный путь, куда будет сгружаться вся информация по изменениям. Сгружать можно в:
- Plex
- Emby
- Jellyfin
- Autoscan
### Настройка targets
Рассмотрим выгрузку в **Plex**. **Autoscan** заменяет стандартную джобу **Plex** по автоматическому обновлению библиотеки **Plex**. Поэтому лучше отключить параметр `Update my library automatically`
Можно настроить одну или несколько целей **Plex** в конфигурации:
```yaml
...
targets:
plex:
- url: https://plex.domain.tld # URL of your Plex server
token: XXXX # Plex API Token
rewrite:
- from: /mnt/Media/ # local file system
to: /data/ # path accessible by the Plex docker container (if applicable)
...
```
В конфигурации следует обратить внимание на пару вещей:
- `url`. URL-адрес может напрямую ссылаться на контейнер докеров, локальный хост или обратный прокси-сервер, расположенный перед Plex.
- `token`. Нам нужен токен Plex API, чтобы делать запросы от вашего имени. Эта статья должна вам помочь.
- `rewrite`. Если Plex работает не в хостовой ОС, а в Docker-контейнере (или в Docker-контейнере работает Autoscan), то необходимо соответствующим образом [переписать пути](https://github.com/Cloudbox/autoscan#rewriting-paths).

@ -0,0 +1,147 @@
# Plex in Docker
[![](https://img.shields.io/github/stars/plexinc/pms-docker?label=%E2%AD%90%20Stars&style=flat-square)](https://github.com/plexinc/pms-docker)
[![Docker Pulls](https://img.shields.io/docker/pulls/plexinc/pms-docker.svg?maxAge=60&style=flat-square)](https://hub.docker.com/r/plexinc/pms-docker/)
[Plex](https://www.plex.tv/) — это клиент-серверная система медиаплеера и пакет программного обеспечения, состоящий из двух основных компонентов (медиа-сервера и клиентских приложений).
![](../../images/docker/plex_1.png)
## Требования для запуска
!!! summary "Уже работает"
* [Traefik](../traefik/index.md) настроен согласно инструкциям
* Запись DNS для имени хоста, которое вы собираетесь использовать (или подстановочный знак ), указывающая на ваш поддерживаемый IP-адрес .
## Подготовка
### Папка
Для запуска контейнера, нужен будет каталог, где Plex сможет хранить свои данные:
```
mkdir /opt/appdata/plex
```
### Использование Docker macvlan (опционально)
Если нужно сделать так, чтобы у докера был свой отдельный IP адрес в домашней локальной сети, то нужно будет использовать macvlan Docker. Контейнеры в macvlan будут думать, что они находятся на отдельном ПК в локальной сети.
Для настройки, нужно добавить блок кода
```yaml
dockervlan:
name: dockervlan
driver: macvlan
driver_opts:
parent: eth1 # using ifconfig
ipam:
config:
- subnet: "192.168.1.0/24"
ip_range: "192.168.1.250/32"
gateway: "192.168.1.1"
```
Моя домашняя сеть находится в подсети **192.168.1.X**. Я захотел сделать так, чтобы у Plex, был свой IP-адрес, а не IP-адрес сервера с кучей контейнеров. Разберем, что значат строчки, из кода выше.
- **eth1** - это имя используемого сетевого интерфейса. Вы можете найти это с помощью команды `ifconfig` или `ip a`.
- Далее назначаем конфиг. **192.168.1.250/32** - таким образом будет только 1 IP в подсети. Если нужно больше, то сменить маску подсети (записывается после `/`)
### Файл .env
Далее создадим `.env` файл, где будут храниться переменные. Для **PUID** и **PGID** нужно задать **UID** и **GID** пользователя системы, которому принадлежат права на медиафайлы в локальной файловой системе.
```yaml title=".env"
VERSION=latest
PUID=1001
PGID=1001
PLEX_CLAIM=
```
### Plex Claim
Не забываем прописать `PLEX_CLAIM` - параметр нужен, чтобы привязать этот экземпляр медиасервера к учетной записи Plex. Получить можно по ссылке: [https://www.plex.tv/claim](https://www.plex.tv/claim)
### Docker Compose для Plex
Ниже приведен файл Docker Compose, рекомендованный для начала работы с Plex. 
```yaml title="docker-compose.yml"
version: "3.7"
networks:
default:
driver: bridge
services:
plex:
container_name: plex
image: plexinc/pms-docker:latest
restart: unless-stopped
networks:
- default
#devices:
# - /dev/dri:/dev/dri # for harware transcoding
ports:
- "32400:32400"
- "32400:32400/udp"
security_opt:
- no-new-privileges:true
volumes:
- /opt/appdata/plex:/config
- /opt/appdata/plex/temp:/transcode
- /mnt:/mnt:ro
environment:
- ADVERTISE_IP="http://172.18.1.250:32400/"
- PUID=$PUID
- PGID=$PGID
- TZ=$TZ
- VERSION=docker
- PLEX_CLAIM=$PLEX_CLAIM
```
Разберем, что значат некоторые параметры в файле:
- Мы используем образ докера **plexinc/pms-docker:public** Plex. Вы также можете использовать изображение **plexpass** , которое предлагает некоторые преимущества вместо **public** . Благодаря поддержке Plex на серверах Raspberry Pi Docker (ARM), [образ Plex Linuxserver.io](https://github.com/linuxserver/docker-plex) также является хорошим.
- Plex будет принадлежать к сети типа мост "default". Это нормально для большинства пользователей.
- Мы также сопоставляем несколько портов контейнера Plex (правая часть двоеточия) с хостом Docker (слева от двоеточия). Plex будет доступен на IP-адресе хоста Docker через порт Plex Docker 32400. Например, мой хост Docker имеет IP-адрес **192.168.1.100** . Итак, Plex будет доступен по адресу `http://192.168.1.100:32400`.
- `/dev/dri` обычно представляет собой видеокарту. Вы можете передать видеокарту вашего хоста докера в контейнер докера Plex для аппаратного перекодирования. Раскомментируйте эти строки (удалите # впереди), чтобы включить видеокарты. Вам придется включить аппаратное перекодирование в настройках Plex. Это особенно полезно для NAS, поддерживающих Plex (например, Synology).
- В разделе `volumes` мы сопоставляем постоянный том для конфигурации Plex, еще один том, на котором находится наша медиабиблиотека. Вы можете сделать его доступным только для чтения, добавив `:ro` в конце.
- С помощью `$PUID` и `$PGID` мы указываем, что Plex запускается с идентификатором пользователя и группой пользователей, которые мы определили ранее в файле `.env`.
- `ADVERTISE_IP` настраивает URL-адреса доступа к пользовательскому серверу в настройках сети сервера Plex. Он указывает другие IP-адреса, по которым можно получить доступ к тому же серверу Plex.
- `ALLOWED_NETWORKS`: предназначено исключительно для регулирования пропускной способности. Указанные здесь IP-адреса считаются локальными (LAN) сетями.
### Настройка сети
В приведенном выше файле Docker Compose используется сеть **default**. Если нужно использовать сеть macvlan, то нужно заменить блок `networks`:
```yaml
networks:
dockervlan:
ipv4_address: 192.168.1.250
```
!!! warning
Обратите внимание, что указанный IP-адрес такой же, как тот, который мы настроили ранее в этом руководстве. Plex должен быть доступен по адресу **http://192.168.1.250:32400**.
### Запуск Plex
После настройки файле Docker Compose пришло время запустить Plex с помощью команды:
```bash
sudo docker compose -f ~/docker/docker-compose.yml up -d
```
Если все будет хорошо, то через пару минут станет доступна страница в браузере, по URL адресу, перечсиленному ранее.
## Доступ к Plex через интернет
Доступ из домашней сети это хорошо, но что делать, когда хочется пользоваться не только дома. Самое простое - перенаправить порт 32400 на роутере, чтобы он указывал на IP-адрес сервера Plex (тот же что и `ADVERTISE_IP`, определенный ранее)
### Использование обратного прокси
Другой безопасный способ доступа к Plex - использовать обратный прокси. Но для этого нужно доменное имя или DDNS.
Можно использовать NGINX или Traefik. NGINX прост в настройке, но не гибок. Я рекомендую [Traefik](../traefik/index.md).

@ -0,0 +1,38 @@
# Jackett
[![](https://img.shields.io/github/stars/Jackett/Jackett?label=%E2%AD%90%20Stars&style=flat-square)](https://github.com/Jackett/Jackett)
[![](https://img.shields.io/github/v/release/Jackett/Jackett?label=%F0%9F%9A%80%20Release&style=flat-square)](https://github.com/Jackett/Jackett/releases/latest)
[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/jackett.svg?maxAge=60&style=flat-square)](https://hub.docker.com/r/linuxserver/jackett/)
![](../../images/docker/jackett-1.png)
Jackett - нужен для преобразования запросов от [Sonarr](./sonarr.md)/[Radarr](./radarr.md)/Lidarr/Readarr и прочих в HTTP-запросы, специфичные для сайта трекера, анализирует ответ html или json и затем отправляет результаты обратно запрашивающему программному обеспечению. Это позволяет получать последние загрузки (например, RSS) и выполнять поиск.
Jackett — это единый репозиторий поддерживаемой логики очистки и перевода индексаторов, который снимает нагрузку с других приложений.
## Установка
Устанавливать будем через Docker Compose
```yaml title="docker-compose.yml"
version: "3.7"
services:
jackett:
container_name: jackett
image: linuxserver/jackett:latest
restart: always
ports:
- "9117:9117"
security_opt:
- no-new-privileges:true
volumes:
- ./jackett:/config
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Moscow
```
Альтернатива: [Prowlarr](./prowlarr.md)

@ -0,0 +1,136 @@
# Plex Meta Managers
[![GitHub release (latest by date)](https://img.shields.io/github/v/release/meisnate12/Plex-Meta-Manager?style=plastic)](https://github.com/meisnate12/Plex-Meta-Manager/releases)
[![Docker Image Version (latest semver)](https://img.shields.io/docker/v/meisnate12/plex-meta-manager?label=docker&sort=semver&style=plastic)](https://hub.docker.com/r/meisnate12/plex-meta-manager)
[![Docker Pulls](https://img.shields.io/docker/pulls/meisnate12/plex-meta-manager?style=plastic)](https://hub.docker.com/r/meisnate12/plex-meta-manager)
[![Reddit](https://img.shields.io/reddit/subreddit-subscribers/PlexMetaManager?color=%2300bc8c&label=r%2FPlexMetaManager&style=plastic)](https://www.reddit.com/r/PlexMetaManager/)
```yaml title="docker-compose.yml"
version: "3.7"
services:
plexmm:
image: lscr.io/linuxserver/plex-meta-manager:latest
container_name: plexmm
restart: "no"
security_opt:
- no-new-privileges:true
environment:
TZ: "Asia/Yekaterinburg"
PUID: 1000
PGID: 1000
PMM_CONFIG: /config/config.yml #optional
PMM_TIME: 03:00 #optional
PMM_RUN: "True" #optional
PMM_TEST: "False" #optional
PMM_NO_MISSING: "False" #optional
volumes:
- ./plexmm:/config
```
## Конфиги под разные типы библиотек
=== "Фильмы"
```yaml title="./plexmm/config.yml"
## This file is a template remove the .template to use the file
libraries:
Фильмы:
metadata_path:
- file: config/Movies/Genre.yml
- file: config/Movies/Studio.yml
- folder: config/Movies/Collections
- folder: config/Movies/Metadata/Collections
- pmm: basic
- pmm: imdb
- pmm: franchise
overlay_path:
- remove_overlays: false
- reapply_overlay: false
- pmm: resolution
- pmm: commonsense
- pmm: ratings
template_variables:
rating1: critic
rating1_image: imdb
rating2: audience
rating2_image: trakt
rating3: user
rating3_image: tmdb
horizontal_position: right
operations:
mass_critic_rating_update: imdb
mass_audience_rating_update: mdb_trakt
mass_user_rating_update: tmdb
```
=== "Сериалы"
```yaml title="./plexmm/config.yml"
libraries:
Сериалы:
metadata_path:
- file: config/TV-Shows/Collections.yml
- folder: config/TV-Shows/Metadata/Anime
- folder: config/TV-Shows/Metadata/TV
- pmm: basic
- pmm: imdb
overlay_path:
- remove_overlays: false
- reapply_overlay: false
- pmm: ratings
template_variables:
rating1: critic
rating1_image: imdb
rating2: audience
rating2_image: trakt
rating3: user
rating3_image: tmdb
horizontal_position: right
- pmm: resolution
template_variables:
overlay_level: season
- pmm: resolution
template_variables:
overlay_level: episode
- pmm: ratings # 3, 4
template_variables:
rating1: audience
rating1_image: trakt
horizontal_position: right # the set of ratings is on the right of the poster
overlay_level: episode
- pmm: status
template_variables:
font_size: 75
#font: config/fonts/Juventus-Fans-Bold.ttf
back_color: "#262626" # darker
back_width: 1920
back_height: 125
horizontal_align: center
vertical_align: top
vertical_offset: 0
```
## Улучшения
### Статус сериала (TMDB)
В конфиге добавить этот текст для библиотеки, в которой нужно отображение:
```yaml
- pmm: status
template_variables:
text_canceled: Отменен
text_airing: Идет сезон
text_returning: Продолжится
text_ended: Завершен
font_size: 75
#back_color: "#262626" # darker
back_width: 1920
back_height: 125
horizontal_align: center
vertical_align: top
vertical_offset: 0
```
[Документация](https://metamanager.wiki/en/latest/defaults/overlays/mediastinger.html)

@ -1,3 +1,5 @@
[![](https://img.shields.io/github/stars/Taxel/PlexTraktSync?label=%E2%AD%90%20Stars)](https://github.com/Taxel/PlexTraktSync)
Сервис добавляет двустороннюю сихронизацию между trakt.tv и Plex Media Server. Для этого требуется учетная запись trakt.tv, но без премиум-подписки Plex или VIP-подписки Trakt, в отличие от приложения Plex, предоставляемого Trakt. Сервис добавляет двустороннюю сихронизацию между trakt.tv и Plex Media Server. Для этого требуется учетная запись trakt.tv, но без премиум-подписки Plex или VIP-подписки Trakt, в отличие от приложения Plex, предоставляемого Trakt.
## Функции ## Функции
@ -13,8 +15,6 @@
## Установка через docker-compose ## Установка через docker-compose
```yaml ```yaml
version: "3.7"
services: services:
plextraktsync: plextraktsync:
image: ghcr.io/taxel/plextraktsync image: ghcr.io/taxel/plextraktsync
@ -29,7 +29,7 @@ services:
command: sync command: sync
``` ```
Запустить синхронизацию: `docker-compose run --rm plextraktsync sync` Запустить синхронизацию: `docker compose run --rm plextraktsync sync`
Для запуска автоматически по расписанию можно использовать crontab или sheduler: Для запуска автоматически по расписанию можно использовать crontab или sheduler:
@ -67,5 +67,3 @@ servers:
urls: urls:
- http://plex:32400 - http://plex:32400
``` ```
[Github](https://github.com/Taxel/PlexTraktSync){ .md-button .md-button--primary }

@ -0,0 +1,40 @@
# Prowlarr
[![](https://img.shields.io/github/stars/Prowlarr/Prowlarr?label=%E2%AD%90%20Stars&style=flat-square)](https://github.com/Prowlarr/Prowlarr)
[![](https://img.shields.io/github/v/release/Prowlarr/Prowlarr?label=%F0%9F%9A%80%20Release&style=flat-square)](https://github.com/Prowlarr/Prowlarr/releases/latest)
[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/prowlarr.svg?maxAge=60&style=flat-square)](https://hub.docker.com/r/linuxserver/prowlarr/)
![](../../images/docker/prowlarr-1.png)
Prowlarr — это менеджер индексаторов и прокси, построенный на стеке *arr .NET/ReactJS. Prowlarr поддерживает торрент-трекеры и индексаторы Usenet для интеграции с приложениями PVR, Lidarr, Mylar3, Radarr, Readarr и Sonarr.
Некоторые из функций, которые делают Prowlarr достойным использования, включают в себя:
- Собственная поддержка Usenet для 24 индексаторов, включая VIP для наушников, а также поддержка любого индексатора, совместимого с Newznab, через «Generic Newznab».
- Поддержка Torrent для более чем 500 трекеров, постоянно добавляемых новых.
- Поддержка торрентов для любого трекера, совместимого с Torznab, через «Generic Torznab».
- Индексатор синхронизируется с [Sonarr](./sonarr.md)/[Radarr](./radarr.md)/Readarr/Lidarr/Mylar3, поэтому ручная настройка других приложений не требуется.
- История и статистика индексатора
- Ручной поиск трекеров и индексаторов на уровне категории.
- Поддержка отправки выпусков непосредственно в ваши клиенты загрузки из Prowlarr.
- Уведомления о работоспособности и статусе индексатора
- Поддержка прокси-сервера индексатора (SOCKS4, SOCKS5, HTTP, Flaresolver)
С Prowlarr у вас будет одно место для управления всеми индексаторами всех ваших приложений Arr. Это отличная замена [Jackett](./jackett.md).
```yaml title="docker-compose.yml"
services:
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
container_name: prowlarr
environment:
- PUID=1001
- PGID=1001
- TZ=Europe/Moscow
volumes:
- ./prowlarr:/config
ports:
- 9696:9696
restart: unless-stopped
```

@ -0,0 +1,10 @@
# Radarr
[![](https://img.shields.io/github/stars/Prowlarr/Prowlarr?label=%E2%AD%90%20Stars&style=flat-square)](https://github.com/Prowlarr/Prowlarr)
[![](https://img.shields.io/github/v/release/Prowlarr/Prowlarr?label=%F0%9F%9A%80%20Release&style=flat-square)](https://github.com/Jackett/Jackett/releases/latest)
<<<<<<< HEAD
[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/prowlarr.svg?maxAge=60&style=flat-square)](https://hub.docker.com/r/linuxserver/prowlarr/)
=======
[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/prowlarr.svg?maxAge=60&style=flat-square)](https://hub.docker.com/r/linuxserver/prowlarr/)
>>>>>>> 49f6799 (?)

@ -0,0 +1,5 @@
# Sonarr
[![](https://img.shields.io/github/stars/Prowlarr/Prowlarr?label=%E2%AD%90%20Stars&style=flat-square)](https://github.com/Prowlarr/Prowlarr)
[![](https://img.shields.io/github/v/release/Prowlarr/Prowlarr?label=%F0%9F%9A%80%20Release&style=flat-square)](https://github.com/Jackett/Jackett/releases/latest)
[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/prowlarr.svg?maxAge=60&style=flat-square)](https://hub.docker.com/r/linuxserver/prowlarr/)

@ -0,0 +1,41 @@
# Решение проблем Plex
## Удаление мусора из PhotoTranscoder
Часто бывает так, что папка `../Library/Application Support/Plex Media Server/Cache/PhotoTranscoder` начинает занимать очень много места. в ней хранится весь кеш из изображений. Разные версии превью - все тут. Надо как-то почистить старое, чтобы освободить место:
```bash
find "<path_to_plexfolder>/Library/Application Support/Plex Media Server/Cache/PhotoTranscoder" -name "*.jpg" -type f -mtime +5 -delete
```
## Удаленный доступ в LAN сети
### Длинная версия
Столкнулся тут с проблемой воспроизведения киношки на тв дома. Почему-то, клиент Plex для ТВ не понимал, что находится в локальной сети и сервер плекса, с которого воспроизводится контент, находится в 5 метрах от него. Из-за этого, шел постоянный процесс транскодинга к 700p. Согласитесь, смотреть кино 4K ужатое до 700p это ужас.
Мой сетап:
- Plex для TV на базе Plex for Android, версия 10.12.
- Сервер Plex на Ubuntu Server в docker (8 ядер, 16гб RAM)
- Роутер Mikrotik - это важно, далее поясню почему.
Первым дело решено было смотреть, какие натсройки есть в Plex, влияющие на подключения. В настройках был обнаружен параметр **Включить ретрансляцию** (Настройки/Сеть). Если кратко, то при включении параметр позволяет подключаться через прокси ретранслятор, когда нет прямого доступа до сервера Плекса. Скорость у этого пркоси ограниченная. Это была первая причина, почему тормозило.
При отключении этого параметра, клиент Плекса на ТВ перестал подключаться к серверу. Это был знак. С одной стороны хороший, с другой не очень - ибо надо дальше искать и чинить проблему. Ошибка `Plex unable to connect securely`.
Ниже этого параметра, есть другой - **Внешний URL-адрес сервера**. Как я понял, это URL адреса для подключения к серверу плекса через DNS-подмену. У меня был указан адрес контейнера Докера в bridge сети. Поменял на свои внешние адреса. Пример: `"https://plex.site.ru","http://your_wan_ip:32400"`
Но это не помогло :(
При входе из локалки на [https://app.plex.tv](https://app.plex.tv) показывало, что библиотека не доступна. Но если входить из вне, то доступ появлялся. Значит какая то проблема с роутером. И тут я вспомнил, что для доступа к своей лабе из локалки, я настраивал [Hairpin NAT](../../network/mikrotik/hairpin-nat.md). Так может и для плекса нужно его сделать.
Это помогло. Настроил для порта *32400*
### Короткая версия
Если ТВ в локалке пишет, что скорости мало, то:
- Проверить не включен ли параметр **Включить ретрансляцию** (Настройки/Сеть)
- Проверить, стоят ли верные **внешние URL адреса**
- Если микротик, то попробовать настроить Hairpin NAT для порта plex (обычно 32400)

@ -247,9 +247,11 @@ networks:
!!! warning "Внимание" !!! warning "Внимание"
никогда не открывайте порт 2375 для доступа в Интернет. Вас взломают/ Это еще более важно для виртуальных частных серверов, которые обычно предоставляют доступ ко всем портам. Включите брандмауэр, чтобы разрешить только порты 80 и 443 (и заблокировать остальные) для прохождения на ваш сервер, а также реализовать обходной путь Docker IP Tables, описанный далее в этом руководстве.
Никогда не открывайте порт 2375 для доступа в Интернет. Вас взломают. Это еще более важно для виртуальных частных серверов, которые обычно предоставляют доступ ко всем портам. Включите брандмауэр, чтобы разрешить только порты 80 и 443 (и заблокировать остальные) для прохождения на ваш сервер, а также реализовать обходной путь Docker IP Tables, описанный далее в этом руководстве.
!!! note !!! note
Кроме того, порт `2375` должен быть открыт только для внутренней сети (*127.0.0.1:2375*). Кроме того, порт `2375` должен быть открыт только для внутренней сети (*127.0.0.1:2375*).
В блоке **environment:** указываем раздел Docker API, который хотим открыть или закрыть. Я добавил комментарии, чтобы описать, какие службы требуют каких разделов API. Например, если вы не используете WatchTower, вы можете ввести **0** для нескольких разделов API. В блоке **environment:** указываем раздел Docker API, который хотим открыть или закрыть. Я добавил комментарии, чтобы описать, какие службы требуют каких разделов API. Например, если вы не используете WatchTower, вы можете ввести **0** для нескольких разделов API.

@ -0,0 +1,68 @@
# Docker Socket Proxy
[![](https://img.shields.io/badge/Github-blue)](https://github.com/fluencelabs/docker-socket-proxy)
[![](https://img.shields.io/github/stars/fluencelabs/docker-socket-proxy?label=%E2%AD%90%20Stars)](https://github.com/fluencelabs/docker-socket-proxy)
## Что это?
Это прокси-сервер с повышенной безопасностью для Docker Socket.
## Зачем?
Предоставление доступа к вашему сокету Docker может означать предоставление root-доступа к вашему хосту или даже ко всему вашему множеству, но некоторым службам требуется подключение к этому сокету, чтобы реагировать на события и т. д. Использование этого прокси-сервера позволяет вам блокировать все, что, по вашему мнению, эти службы не должны делать.
```yaml title="docker-compose.yml"
version: "3.8"
services:
# Docker Socket Proxy - Security Enchanced Proxy for Docker Socket
socket-proxy:
container_name: socket-proxy
image: fluencelabs/docker-socket-proxy
restart: always
privileged: true
security_opt:
- no-new-privileges:true
ports:
- 2375:2375
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
environment:
- LOG_LEVEL=warning # debug,info,notice,warning,err,crit,alert,emerg
## Variables match the URL prefix (i.e. AUTH blocks access to /auth/* parts of the API, etc.).
# 0 to revoke access.
# 1 to grant access.
## Granted by Default
- EVENTS=1
- PING=1
- VERSION=1
## Revoked by Default
# Security critical
- AUTH=0
- SECRETS=0
- POST=1 # Watchtower
- DELETE=1 # Watchtower
# GET Optons
- BUILD=0
- COMMIT=0
- CONFIGS=0
- CONTAINERS=1 # Traefik, portainer, etc.
- DISTRIBUTION=0
- EXEC=1 # Portainer
- IMAGES=1 # Portainer, Watchtower
- INFO=1 # Portainer
- NETWORKS=1 # Portainer, Watchtower
- NODES=0
- PLUGINS=0
- SERVICES=1 # Portainer
- SESSION=0
- SWARM=0
- SYSTEM=0
- TASKS=1 # Portaienr
- VOLUMES=1 # Portainer
# POST Options
- CONTAINERS_CREATE=1 # WatchTower
- CONTAINERS_START=1 # WatchTower
- CONTAINERS_UPDATE=1 # WatchTower
# DELETE Options
- CONTAINERS_DELETE=1 # WatchTower
- IMAGES_DELETE=1 # WatchTower
```

@ -0,0 +1,53 @@
# Syncthing
[![](https://img.shields.io/github/stars/syncthing/syncthing?label=%E2%AD%90%20Stars)](https://github.com/syncthing/syncthing)
[Syncthing](https://syncthing.net/) — отличное программное обеспечение, которое позволяет безопасно синхронизировать файлы между различными устройствами и операционными системами.
## Docker Compose
Запускать будем через **Docker Compose**. Предпологается, что **Docker** уже установлен в системе.
```yaml title="docker-compose.yml"
version: "3.7"
services:
syncthing:
image: syncthing/syncthing
container_name: syncthing
hostname: my-syncthing
environment:
- PUID=$PUID
- PGID=$PGID
volumes:
- ./syncthing:/var/syncthing
ports:
- 8384:8384 # Web UI
- 22000:22000/tcp # TCP file transfers
- 22000:22000/udp # QUIC file transfers
- 21027:21027/udp # Receive local discovery broadcasts
restart: unless-stopped
```
Запустите стек, используя команду `docker compose up`
Веб-интерфейс будет доступен по адресу `http://ip-address:8384`. Далее в веб интерефейсу будет предупреждение, что нужно установить пароль. Переходим в верхнее меню и выбираем «Действия», затем в меню окна нажимает «GUI» и вводим имя пользователя и пароль. Использовать нужно надежные пароли.
## Синхронизация с Android
Со смартфона заходим в магазин приложений Google, находим и устанавливаем приложение Syncthing.
В интерфейсе Syncthing нажимаем нижнюю кнопку «Действия», затем «Показать идентификатор». Появится QR-код, который нужно отсканировать с помощью смартфона.
Открываем приложение Syncthing смартфона и нажимаем «Устройства», затем «+», затем значок справа от «ID устройства» и сканируем QR-код NAS. Мы принимаем сообщения, и у нас уже подключены два устройства.
Чтобы синхронизировать папку, например фотографии, со смартфона:
1. Создаем папку `/DATA/user1/phone_photos` на нашем сервере, где стоит **Syncthing**.
2. В интерфейсе **Syncthing** смартфона нажимаем «Папки», а затем «+», в окне нажимаем «Каталог» и ищем папку с нашими фотографиями (обычно DCIM), разрешаем доступ, выбираем сервер, чтобы активировать эту папку, и подтвердить значок в правом верхнем углу.
3. В интерфейсе **Syncthing** появится диалоговое окно, нажмем «Добавить». В окне заходим в «Путь к папке» и пишем «/data1/phone_photos/». Вероятно, будет полезно перейти на вкладку «Дополнительно» и нажать «Разрешения игнорировать». Затем нажмите «Сохранить». В этот момент должна начаться синхронизация фотографий с нашего смартфона в папку, определенную на сервере папку `/DATA/user1/phone_photos`.
## Настройка клиента в других системах.
Чтобы установить Syncthing на другие платформы, см. здесь: [https://syncthing.net/downloads/](https://syncthing.net/downloads/).

@ -1,65 +0,0 @@
[github.com](https://github.com/thomseddon/traefik-forward-auth)
- Бесшовно накладывает любой http-сервис на одну конечную точку (см.: `url-path`в [разделе «Конфигурация](https://github.com/thomseddon/traefik-forward-auth#configuration) ») .
- Поддерживает несколько поставщиков, включая Google и OpenID Connect (поддерживается Azure, Github, Salesforce и т. д.).
- Поддерживает несколько доменов/поддоменов, динамически генерируя redirect\_uri
- Позволяет выборочно применять/обходить аутентификацию на основе параметров запроса (см `rules`. [Конфигурация](https://github.com/thomseddon/traefik-forward-auth#configuration) )
- Поддерживает использование централизованной аутентификации host/redirect\_uri (см `auth-host`. [Конфигурация](https://github.com/thomseddon/traefik-forward-auth#configuration) )
- Позволяет сохранять аутентификацию в нескольких доменах (см. [Домены cookie](https://github.com/thomseddon/traefik-forward-auth#cookie-domains) )
- Поддерживает расширенную аутентификацию за пределами срока действия токена Google (см.: `lifetime`в разделе [«Конфигурация](https://github.com/thomseddon/traefik-forward-auth#configuration) »).
## Применение
docker-compose
```yaml
version: "3.9"
# docker network create --gateway 172.18.0.254 --subnet 172.18.0.0/24 traefik_net
networks:
traefik_net:
external: true
services:
traefik-forward-auth:
image: thomseddon/traefik-forward-auth
container_name: traefik-forward-auth
restart: always
networks:
traefik_net:
ipv4_address: 172.18.1.4
environment:
- DEFAULT_PROVIDER=oidc
# Keycloak Section
#- PROVIDERS_OIDC_ISSUER_URL=https://auth.example.ru/auth/realms/traefik #for keycloak
#- PROVIDERS_OIDC_CLIENT_ID=$PROVIDERS_OIDC_CLIENT_ID
#- PROVIDERS_OIDC_CLIENT_SECRET=$PROVIDERS_OIDC_CLIENT_SECRET
# Google OAuth
- PROVIDERS_GOOGLE_CLIENT_ID=your-client-id
- PROVIDERS_GOOGLE_CLIENT_SECRET=your-client-secret
- SECRET=secret #replace
- LOG_LEVEL=warn
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.traefik-forward-auth.forwardauth.address=http://traefik-forward-auth:4181"
- "traefik.http.middlewares.traefik-forward-auth.forwardauth.authResponseHeaders=X-Forwarded-User"
- "traefik.http.services.traefik-forward-auth.loadbalancer.server.port=4181"
```
Более полный файл [docker-compose.yml](https://github.com/thomseddon/traefik-forward-auth/blob/master/examples/traefik-v2/swarm/docker-compose.yml) или [kubernetes/simple-separate-pod](https://github.com/thomseddon/traefik-forward-auth/blob/master/examples/traefik-v2/kubernetes/simple-separate-pod/) можно найти в каталоге примеров
## Google провайдер
Настройка провайдера на примере Google. [Другие провайдеры](https://github.com/thomseddon/traefik-forward-auth/wiki/Provider-Setup) можно посмотреть на Github автора.
Перейдите на [https://console.developers.google.com](https://console.developers.google.com/) и убедитесь, что вы переключились на правильную учетную запись электронной почты.
Создайте новый проект, затем найдите и выберите «Учетные данные» в строке поиска. Заполните вкладку «Экран согласия OAuth».
Нажмите «Создать учетные данные» > «Идентификатор клиента OAuth». Выберите «Веб-приложение», введите имя своего приложения, пропустите «Авторизованные источники JavaScript» и заполните «Авторизованные URI перенаправления» со всеми доменами, с которых вы разрешите аутентификацию, добавив (например, https: `url-path`//app.test [. com/\_oauth](https://app.test.com/_oauth) )
Вы должны установить параметры конфигурации `providers.google.client-id`и `providers.google.client-secret`
## Авторские права
2018 Том Седдон

@ -0,0 +1,201 @@
# Настройка страницы в Traefik 2
## Промежуточное программное обеспечение ErrorPage
Traefik поставляется с готовым [middlewares error](https://docs.traefik.io/middlewares/errorpages/). Его обязанность — возвращать пользовательскую страницу вместо страницы по умолчанию в соответствии с настроенными диапазонами кодов состояния HTTP. Вот пример:
```yaml
# Dynamic Custom Error Page for 4XX/5XX Status Code
labels:
- "traefik.http.middlewares.test-errorpage.errors.status=400-599"
- "traefik.http.middlewares.test-errorpage.errors.service=serviceError"
- "traefik.http.middlewares.test-errorpage.errors.query=/{status}.html"
```
Как указано в официальной документации:
- **status** — это статус HTTP, который вызывает страницу с ошибкой (в этом примере каждый код между 400 и 599).
- `serviceError` - это **служба** , которая будет обслуживать новую запрошенную страницу ошибки
- **запрос** — URL-адрес страницы ошибки (размещенной на сервисе), где `{status}` в запросе будет заменен полученный код состояния.
Стоит отметить, что страницы ошибок не размещаются непосредственно на Traefik, необходимо размещать их на своем веб-сервере. На следующем рисунке из документации Traefik показан пример этого сценария.
![](../../images/docker/traefik-errorpages.jpg)
## Рабочий сценарий
Промежуточное ПО ErrorPage - это то что нам нужно. Но как мы можем использовать его для обслуживания наших страниц и ошибок в целом?
Представьте, что вы хотите обслуживать глобальную страницу для URL-адресов, которые указывают на ваш хост, но не привязаны к определенным службам. Например, если у вас есть запись DNS, которая соответствует таким запросам, как:
```
*.example.com
```
URL-адреса, такие как:
```
http://bla-bla.example.com
```
попадут в ваш Traefik, но ни один маршрутизатор не справится с ними. В таких случаях мы хотим, чтобы Traefik вернул нашу классную кастомную страницу ошибки.
Как мы можем это настроить? Начнем с этого чертежа:
**В двух словах:** мы определяем правило **универсального маршрутизатора с низким приоритетом** , которое сработает только в том случае, если другие маршрутизаторы для определенных служб не могут обработать запрос. Затем такой неизвестный запрос обрабатывается **промежуточным программным обеспечением ErrorPage**, которое сообщает **Nginx** об обслуживании страницы с ошибкой.
## Практика
Пришло время практики. Будем считать, что у нас же есть работающий Traefik 2, запущенный через `docker-compose`. Добавим в нему `nginx` с нашими страничками ошибок и тестовый контейнер `whoami` для проверки работы:
??? note
```yaml title="docker-compose.yml"
version: "3.9"
networks:
traefik_net:
external: true
services:
# Traefik 2 - Reverse Proxy
traefik:
container_name: traefik
image: traefik:2.10
restart: always
security_opt:
- no-new-privileges:true
command: # CLI arguments
- --api.dashboard=true
- --providers.docker.network=traefik_net
- --entrypoints.webinsecure.address=:80
- --providers.docker.exposedByDefault=false
- --providers.docker=true
networks:
- traefik_net
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
labels:
traefik.enable: true
## Dashboard
traefik.http.routers.traefik.entrypoints: http
traefik.http.routers.traefik.rule: host('traefik.localhost')
traefik.http.routers.traefik.service: api@internal
nginx-error:
image: nginx:latest
volumes:
- ./error-pages:/usr/share/nginx/error-pages
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
network:
- traefik_net
labels:
traefik.enable: true
traefik.http.routers.error-rtr.rule: HostRegexp(`{host:.+}`)
traefik.http.routers.error-rtr.priority: 1
traefik.http.routers.error-rtr.entrypoints: webinsecure
traefik.http.routers.error-rtr.middlewares: error-pages-middleware
traefik.http.middlewares.error-pages-middleware.errors.status: 400-599
traefik.http.middlewares.error-pages-middleware.errors.service: error-pages-service
traefik.http.middlewares.error-pages-middleware.errors.query: /{status}.html
traefik.http.services.error-pages-svc.loadbalancer.server.port: 80
test-app:
image: containous/whoami
networks:
- traefik_net
labels:
traefik.enable: true
traefik.http.routers.error-rtr.rule: host('test.localhost')
traefik.http.routers.error-rtr.entrypoints: webinsecure
traefik.http.services.error-pages-svc.loadbalancer.server.port: 80
```
В приведенном compose файле содержится все, что нам нужно для отображения кастомных страниц ошибок. Страницы ошибок находятся в службе Docker `nginx-error`, которая управляет контейнером **Nginx**, предназначенным для страниц ошибок.
Все начинается с `error-router`:
```yaml
labels:
traefik.http.routers.error-rtr.rule: HostRegexp(`{host:.+}`)
traefik.http.routers.error-rtr.priority: 1
traefik.http.routers.error-rtr.entrypoints: webinsecure
```
Ему присвоен [приоритет](https://doc.traefik.io/traefik/routing/routers/#priority) `1`, поэтому он перехватывает все запросы , если они не были обработаны ранее другими (т.е. `traefik.http.routers.traefik` и `traefik.http.routers.my-test-app`).
Затем прикрепляем к нему `error-pages-middleware`:
```yaml
labels:
traefik.http.routers.error-rtr.middlewares: error-pages-middleware
```
это фактическое промежуточное программное обеспечение ErrorPage Traefik:
```yaml
labels:
traefik.http.middlewares.error-pages-middleware.errors.status: 400-599
traefik.http.middlewares.error-pages-middleware.errors.service: error-pages-svc
traefik.http.middlewares.error-pages-middleware.errors.query: /{status}.html
traefik.http.services.error-pages-service.loadbalancer.server.port: 80
```
Такое промежуточное программное обеспечение запросит `error-pages-svc` обслуживание наших кастомных страниц ошибок.
Пара слов о **папках Nginx**. В этом примере мы связываем монтирование (но мы также можем скопировать файлы в контейнер) двух основных томов:
```yaml
volumes:
- ./error-pages:/usr/share/nginx/error-pages
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
```
В этой папке ``./error-pages` мы храним файлы страниц ошибок, такие как наши собственные файлы `404.html`. Кроме того, мы настраиваем конфигурацию этого экземпляра Nginx следующим образом `default.conf`:
```nginx
server {
listen 80;
server_name localhost;
error_page 404 /404.html;
# other error pages here:
# error_page 403 /403.html;
location / {
root /usr/share/nginx/error-pages;
internal;
}
}
```
## Проверка работы
Пришло время запустить наши контейнеры и проверить их работу.
Если вы запросите: `http://traefik.localhost/` или `http://test.localhost/` вы получите панель управления Traefik и выходные данные whoami соответственно.
Если вы попытаетесь получить: `http://bla-bla.localhost`, Traefik вернет именно вашу дружественную страницу с ошибкой 404 (т. е. `404.html`).
!!! tip
Обратите внимание: если вы заинтересованы в **управлении ошибками таким же образом и для определенных служб, вы можете использовать промежуточное программное обеспечение ErrorPage**.
Например, вы можете подключить промежуточное программное обеспечение к маршрутизатору панели управления Traefik следующим образом:
```yaml
labels:
# Dashboard
traefik.http.routers.traefik.rule: Host(`traefik.localhost`)
traefik.http.routers.traefik.service: api@internal
traefik.http.routers.traefik.entrypoints: webinsecure
# Attach the error middleware also to this router
traefik.http.routers.traefik.middlewares: error-pages-middleware
```
Теперь, если вы запросите: `http://traefik.localhost/bla-bla`, вы снова получите настроенную страницу ошибки 404.
---
[Middlewares ErrorPage](https://docs.traefik.io/middlewares/errorpages/)
Интересная ветка на эту тему на форуме сообщества Containous.
[Статические страницы ошибок сервера в образе Docker](https://github.com/tarampampam/error-pages) (также готовы для Traefik)

@ -0,0 +1,244 @@
# Traefik Forward Auth
[![](https://img.shields.io/github/stars/thomseddon/traefik-forward-auth?label=%E2%AD%90%20Stars)](https://github.com/thomseddon/traefik-forward-auth)
[![](https://img.shields.io/github/v/release/thomseddon/traefik-forward-auth?label=%F0%9F%9A%80%20Release)](https://github.com/thomseddon/traefik-forward-auth/releases/latest)
![Docker Pulls](https://img.shields.io/docker/pulls/thomseddon/traefik-forward-auth.svg)
- Бесшовно накладывает любой http-сервис на одну конечную точку (см.: `url-path`в [разделе «Конфигурация](https://github.com/thomseddon/traefik-forward-auth#configuration) ») .
- Поддерживает несколько поставщиков, включая Google и OpenID Connect (поддерживается Azure, Github, Salesforce и т. д.).
- Поддерживает несколько доменов/поддоменов, динамически генерируя redirect\_uri
- Позволяет выборочно применять/обходить аутентификацию на основе параметров запроса (см `rules`. [Конфигурация](https://github.com/thomseddon/traefik-forward-auth#configuration) )
- Поддерживает использование централизованной аутентификации host/redirect\_uri (см `auth-host`. [Конфигурация](https://github.com/thomseddon/traefik-forward-auth#configuration) )
- Позволяет сохранять аутентификацию в нескольких доменах (см. [Домены cookie](https://github.com/thomseddon/traefik-forward-auth#cookie-domains) )
- Поддерживает расширенную аутентификацию за пределами срока действия токена Google (см.: `lifetime`в разделе [«Конфигурация](https://github.com/thomseddon/traefik-forward-auth#configuration) »).
## Применение c Google OAuth
Google SSO выбран, как один из самых простых способов сделать доступными и защитить домашние сервисы. Процесс настройки прост. Из минусов можно выделить, что не будет гибкого управления пользователями - нет ограничения доступа по ресурсам. Я понимаю, что самое простое, это сделать авторизацию при помощи `.htpasswd` файла. Для одной службы это норм, но когда служб много - вводить каждый раз логин и пароль может быть утомительным.
После внедрения **Traefik Forward Auth** нужно будет входить в систему только один раз. А добавив _Google OAuth_, можно настроить двухфакторную аутентификацию (2FA), что делает домашние сервисы более защищенными, нежели использование файла `.htpasswd`.
Для тех кто не хочет отдавать авторизацию в руки гугла и хочет что-то свое - смотрите в сторону **Authelia**, **Keycloak** или **Authentik**. Я использовал все 3 проекта для авторизации и остановился на **Authentik**.
## Что за OAuth?
**OAuth** — открытый протокол (схема) [авторизации](https://ru.wikipedia.org/wiki/%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F "Авторизация"), обеспечивающий предоставление третьей стороне ограниченный доступ к защищённым ресурсам пользователя без передачи ей (третьей стороне) логина и пароля - [Wikipedia](https://ru.wikipedia.org/wiki/OAuth)
Вход и аутентификация Google OAuth для Traefik действует как посредник для ваших служб, разрешая или запрещая доступ после проверки авторизованного файла cookie в вашем браузере. Процесс выглядит примерно так:
1. Для нашего хоста сделан **запрос** (например, https://traefik.example.com)
2. Запрос направляется нашим провайдером DNS на наш IP-адрес WAN, где порты 80 и 443 перенаправляются в контейнер Traefik.
3. Traefik видит входящий запрос и распознает, что **Forward Auth** определен в **метках** для этого хоста, поэтому запрос перенаправляется в контейнер **Traefik Forward Auth**.
4. Затем контейнер проверяет, есть ли в браузере авторизованный файл cookie. Если файл cookie отсутствует, запрос отправляется на **сервер авторизации Google OAuth2**.
5. После успешного входа в Google запрос отправляется на **URI перенаправления**, указанный для **веб-приложения** (https://oauth.example.com/_oauth).
6. Затем авторизованный файл cookie сохраняется в браузере, и пользователь отправляется во внутреннюю службу.
В следующий раз, когда этот браузер попытается получить доступ к службе, защищенной входом и аутентификацией на основе OAuth, файл cookie будет распознан, и пользователь будет перенаправлен на их службу без запроса на вход.
![](../../images/docker/traefik-forward-auth-google-flow.png)
Процесс происходит очень быстро и как только ваш браузер получит файл cookie, вы забудете, что включили Google OAuth с Traefik.
!!! note "Примечание"
Образ Traefik Forward Auth использует [**OpenID** **Connect**](https://en.wikipedia.org/wiki/OpenID_Connect) (**OIDC**),который представляет собой уровень аутентификации поверх протокола [OAuth 2.0](https://en.wikipedia.org/wiki/OAuth#OAuth_2.0 "OAuth"). Образ Docker, представленный в этом руководстве, поддерживает Google, а также [других поставщиков OIDC](https://github.com/thomseddon/traefik-forward-auth/wiki/Provider-Setup).
Процесс настройки Google OAuth для Traefik можно разделить на 3 этапа:
1. создание записей DNS
2. настройку службы Google OAuth
3. изменение файлов docker compose и добавление меток Traefik для активации прямой аутентификации.
## Этап 1. Создание записи DNS
Для начала, создадим новую запись DNS для нашей службы OAuth (Google перенаправит на этот адрес после аутентификации), выбираем тип CNAME. Для примера, используем домменое имя **example.com**.
Устанавливаем запись DNS как **oauth.example.com**. На рисунках ниже показан скриншот из Cloudflare.
![](../../images/docker/traefik-forward-auth-google-1.png)
Если есть запись CNAME с подстановочными знаками, указывающую на ваш корневой домен, то можно пропустить этот шаг.
## Этап 2. Настройка службы Google OAuth2
После создания записи DNS, переходим к настройке Google OAuth.
### Этап 2.1. Создаём проект Google.
Нам нужно создать **проект Google**, который будет содержать наше **веб-приложение**, **экран согласия** и **учетные данные**.
Перейдем в [Google Cloud Developers Console](https://console.developers.google.com/). Затем проверим, что вошли в правильный аккаунт Google, который хотим использовать (обычно это будет адрес электронной почты).
!!! note "Примечание"
Рекомендую выйти из других активных аккаунтов Google, чтобы быть уверенным, что на каждом этапе используется правильный аккаунт.
При появлении запроса нужно будет согласиться с **Условиями использования Google Cloud Platform**, чтобы использовать их API.
![](../../images/docker/traefik-forward-auth-google-2.png)
Сервис OAuth от Google можно использовать бесплатно, поэтому **отказываемся** от бесплатной пробной версии. Нажимаем «**Select a project**» и «**New project**».
![](../../images/docker/traefik-forward-auth-google-3.png)
Введим уникальное имя для идентификации проекта, например **Traefik Auth**. Далее нажимаем **Create**.
![](../../images/docker/traefik-forward-auth-google-4.png)
### Этап 2.2. Создайте учетные данные OAuth
Теперь, когда наш проект создан, нам нужно создать идентификатор клиента и секрет клиента, чтобы пройти аутентификацию в Google. Выберите наш проект **Traefik Authentication** и в меню навигации выберите **APIs & Services > Credentials**. Нажмите **Create Credentials > OAuth client ID**.
![](../../images/docker/traefik-forward-auth-google-5.png)
![](../../images/docker/traefik-forward-auth-google-6.png)
### Этап 2.3. Настройте Consent Screen
После того, как выбираем **OAuth Client ID**, вы увидите примечание о настройке **consent screen**, как показано ниже. Перед продолжением необходимо настроить **consent screen**.
![](../../images/docker/traefik-forward-auth-google-7.png)
Если автоматический запрос не появится, надо выбрать **OAuth consent screen** на левой панели.
Далее выбераем тип пользователей приложения: **External** и нажимаем **Create**.
![](../../images/docker/traefik-forward-auth-google-8.png)
Вводим имя своего приложения, например **Traefik Auth**, затем в разделе **Authorized domains** вводим свой домен, например **example.com**. Обязательно нажимаем **Enter**.
![](../../images/docker/traefik-forward-auth-google-9.png)
После нажатия кнопки **Save and Continue** перейдем на следующий шаг. Далее везде нажимаем снизу **Save and Continue**.
### Этап 2.4. Создайте идентификатор клиента OAuth
Выбераем наш проект **Traefik Auth**, далее в меню навигации переходим по пути **APIs & Services > Credentials**. Нажимаем **Create Credentials > OAuth client ID**.
Теперь выберите тип **Web Application** и вводим имя для своего веб-приложения, например, **Traefik**. Кроме того, потребуется ввести **Authorized redirect URI** в виде _https://oauth.example.com/_oauth_. Убедитесь, что нажата **Enter**, чтобы добавить его, а затем нажмем **Save**.
!!! note "Примечание"
Разрешено добавлять только **URI перенаправления**, которые ведут на наши **авторизованные домены**. В случае проблемы, нужно вернутся к странице **OAuth consent screen**
Скопируйте и сохраните **client ID** и **client secret**. Их нужно будет использовать на следующем шаге.
## Этап 3. Настройка аутентификации Traefik с помощью OAuth2
Теперь, когда учетные данные OAuth настроены, нужно полготовить контейнер OAuth.
Обязательно нужно остановить контейнер [Traefik](index.md) и поправить файл `docker-compose.yml`, добавив метки Traefik и контейнер OAuth, как описано ниже.
### Этап 3.1. Создание middlewares - Traefik Auth
Пришло время создать новый файл `middlewares-oauth.yml` и добавьте следующие строки:
```yaml
http:
middlewares:
middlewares-oauth:
forwardAuth:
address: "http://oauth:4181" # Указать название сервиса OAuth, как задано в файле docker-compose.yml
trustForwardHeader: true
authResponseHeaders:
- "X-Forwarded-User"
chain-oauth:
chain:
middlewares:
- middlewares-oauth
```
Сохраняем файл и выходим из редактирования.
### Этап 3.2: Контейнер OAuth Forwarder
Пример файла `docker-compose.yml`
```yaml title="Пример файла docker-compose.yml"
version: "3.9"
services:
traefik-forward-auth:
image: thomseddon/traefik-forward-auth
container_name: traefik-forward-auth
restart: always
environment:
- DEFAULT_PROVIDER=oidc
# Keycloak Section
#- PROVIDERS_OIDC_ISSUER_URL=https://auth.example.com/auth/realms/traefik #for keycloak
#- PROVIDERS_OIDC_CLIENT_ID=$PROVIDERS_OIDC_CLIENT_ID
#- PROVIDERS_OIDC_CLIENT_SECRET=$PROVIDERS_OIDC_CLIENT_SECRET
# Google OAuth
- PROVIDERS_GOOGLE_CLIENT_ID=your-client-id
- PROVIDERS_GOOGLE_CLIENT_SECRET=your-client-secret
- SECRET=secret #replace
- LOG_LEVEL=warn
- WHITELIST=your-email-google
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.traefik-forward-auth.forwardauth.address=http://traefik-forward-auth:4181"
- "traefik.http.middlewares.traefik-forward-auth.forwardauth.authResponseHeaders=X-Forwarded-User"
- "traefik.http.services.traefik-forward-auth.loadbalancer.server.port=4181"
```
Теперь более подробнее что и как заполнять:
- **your-client-id** и **your-client-secret**: полученные ранее в этом руководстве по Traefik Oauth2.
- **secret**: используется для подписи файла cookie и должен быть случайным. Создайте случайный секрет с помощью: `openssl rand -hex 16`
- **your-email-google**: используется для указания, кто может получить доступ. Формат электронной почты.
!!! note
Более полный файл [docker-compose.yml](https://github.com/thomseddon/traefik-forward-auth/blob/master/examples/traefik-v2/swarm/docker-compose.yml) или [kubernetes/simple-separate-pod](https://github.com/thomseddon/traefik-forward-auth/blob/master/examples/traefik-v2/kubernetes/simple-separate-pod/) можно найти в каталоге примеров
### Этап 3.3: Добавление Google OAuth для служб Docker
Возьмем пример панели инструментов Traefik 2. Нужно сделать так, чтобы доступ к панели осущесвлялся только через авторизацию Google OAuth2:
Указываем для службы в файле `docker-compose` следующие строки:
```yaml
labels:
- "traefik.enable=true"
## Middlewares
- "traefik.http.routers.heimdall-rtr.middlewares=chain-oauth@file"
```
Итак, вот и все, вход и аутентификация на основе OAuth для стека обратного прокси-сервера Traefik.
После этого используйте команду **docker-compose up -d**.
### Этап 3.4. Добавление OAuth в другие (не Docker) службы
Приложениями, не относящимися к Docker, могут быть любые службы, находящиеся в хост-системе или в удаленной системе.
Поставщик файлов Traefik позволяет нам добавлять динамические маршрутизаторы, промежуточное ПО и службы.
```yaml title="Пример файла для pihole"
http:
routers:
pihole-rtr:
rule: "Host(`pihole.example.com`)"
entryPoints:
- https
middlewares:
- chain-oauth
service: pihole-svc
tls:
certResolver: dns-cloudflare
middlewares:
pihole-add-admin:
addPrefix:
prefix: "/admin"
services:
pihole-svc:
loadBalancer:
servers:
- url: "http://192.168.80.254:80"
```
## Существуют ли другие альтернативы Google OAuth?
Да. [Authelia](https://github.com/authelia/authelia), [Authentik](https://goauthentik.io/) и [Keycloak](https://github.com/keycloak/keycloak). По сложности: Authelia, Authentik, Keycloak

@ -1,16 +1,22 @@
Traefik — это обратный прокси-сервер с открытым исходным кодом, обеспечивающий простую работу с микросервисами и/или просто контейнерами с вашими приложениями. # Traefik
**Traefik** — это обратный прокси-сервер с открытым исходным кодом, обеспечивающий простую работу с микросервисами и/или просто контейнерами с вашими приложениями.
!!! tip
Обратный прокси-сервер (reverse proxy, реверс-прокси) служит для ретрансляции запросов из внешней сети к каким-либо серверам/сервисам внутренней сети (например веб-сервера, БД или файловые хранилища) и позволяет: Обратный прокси-сервер (reverse proxy, реверс-прокси) служит для ретрансляции запросов из внешней сети к каким-либо серверам/сервисам внутренней сети (например веб-сервера, БД или файловые хранилища) и позволяет:
- обеспечить сокрытие структуры внутренней сети и подробностей о находящейся в ней сервисах;
- осуществлять балансировку нагрузки (load balancing) между экземплярами одного и того же сервиса или серверами с одинаковыми задачами; - обеспечить сокрытие структуры внутренней сети и подробностей о находящейся в ней сервисах
- обеспечить зашифрованное (HTTPS) соединение между клиентом и любым сервисом, в таком случае SSL сессия создается между клиентом и прокси, а между прокси и сервисом во внутренней сети устанавливается незашифрованное HTTP соединение, если сервис поддерживает HTTPS то можно организовать зашифрованное соединение и во внутренней сети; - осуществлять балансировку нагрузки (load balancing) между экземплярами одного и того же сервиса или серверами с одинаковыми задачами
- обеспечить зашифрованное (HTTPS) соединение между клиентом и любым сервисом, в таком случае SSL сессия создается между клиентом и прокси, а между прокси и сервисом во внутренней сети устанавливается незашифрованное HTTP соединение, если сервис поддерживает HTTPS то можно организовать зашифрованное соединение и во внутренней сети
- организовать контроль доступа к сервисам (аутентификацию клиента), а также установить файрвол (брандмауэр). - организовать контроль доступа к сервисам (аутентификацию клиента), а также установить файрвол (брандмауэр).
В статье будет описываться использование Traefik в Docker в качестве реверс-прокси для других контейнеров Docker, а также не контейнеризированных сервисов. В статье будет описываться использование Traefik в Docker в качестве реверс-прокси для других контейнеров Docker, а также не контейнеризированных сервисов.
## Введение ## Введение
Traefik позиционируется разработчиками как “Edge Router”, то есть можно направить его непосредственно в глобальную сеть одной стороной и во внутреннюю другой. Если у читателя создалось впечатление что таким образом создается единая точка отказа всей системы, то так и есть, но есть несколько моментов:
- во-первых, **Traefik** имеет развитый функционал для автоматического восстановления при сбоях; **Traefik** позиционируется разработчиками как "Edge Router", то есть можно направить его непосредственно в глобальную сеть одной стороной и во внутреннюю другой. Если у читателя создалось впечатление что таким образом создается единая точка отказа всей системы, то так и есть, но есть несколько моментов:
- во-первых, **Traefik** имеет развитый функционал для автоматического восстановления при сбоях
- во-вторых, существует **Traefik EE** — платная версия, в которой помимо прочих преимуществ имеется HA (Hight Availability, Высокая доступность), что подразумевает распределение нагрузки между несколькими экземплярами сервиса (узлами), таким образом при отказе одного его задачи перераспределяются на другие узлы, а отказавший узел отключается и затем немедленно вводится обратно в эксплуатацию. - во-вторых, существует **Traefik EE** — платная версия, в которой помимо прочих преимуществ имеется HA (Hight Availability, Высокая доступность), что подразумевает распределение нагрузки между несколькими экземплярами сервиса (узлами), таким образом при отказе одного его задачи перераспределяются на другие узлы, а отказавший узел отключается и затем немедленно вводится обратно в эксплуатацию.
> В качестве примечания отметим, что в статье будет рассматриваться бесплатная версия Traefik. > В качестве примечания отметим, что в статье будет рассматриваться бесплатная версия Traefik.
@ -19,23 +25,23 @@ Traefik позиционируется разработчиками как “Ed
Список основных провайдеров: Список основных провайдеров:
- Docker - Docker
- File
- Kubernetes - Kubernetes
- Consul Catalog - Consul Catalog
- Marathon - Marathon
- Rancher - Rancher
- File
В рамках этой статьи будут рассмотрены первый и последний провайдеры из этого списка. В рамках этой статьи будут рассмотрены первый и второй провайдеры из этого списка.
Вероятно, не знакомому с темой читателю будет не понятно, чем является провайдер с именем — “File”, это некоторый файл (или папка с файлами), в котором описана конфигурация какого-либо сервиса, не связанного с другими провайдерами, но который должен быть скрыт за реверс-прокси. Остальные же провайдеры являются различными системами оркестрации контейнеров. Вероятно, не знакомому с темой читателю будет не понятно, чем является провайдер с именем — *File*, это некоторый файл (или папка с файлами), в котором описана конфигурация какого-либо сервиса, не связанного с другими провайдерами, но который должен быть скрыт за реверс-прокси. Остальные же провайдеры являются различными системами оркестрации контейнеров.
Файл конфигурации Traefik, а также файлы для провайдера “File” могут быть написаны на TOML либо YAML, в статье будут приведены примеры на YAML так как этот синтаксис больше нравится автору, а какой-либо функциональной разницы между ними нет, а также не составляет трудности переписать файлы на другой формат конфигурации. Traefik будет развернут в Docker. Для развертывания будет использоваться docker-compose, для обеспечения простоты повторного развертывания. Файл конфигурации **Traefik**, а также файлы для провайдера *File* могут быть написаны на TOML либо YAML, в статье будут приведены примеры на YAML так как этот синтаксис больше нравится автору, а какой-либо функциональной разницы между ними нет, а также не составляет трудности переписать файлы на другой формат конфигурации. Traefik будет развернут в Docker. Для развертывания будет использоваться `docker-compose`, для обеспечения простоты повторного развертывания.
> В статье будут приведены команды для ОС Linux. > В статье будут приведены команды для ОС Ubuntu.
## Деплой Traefik ## Деплой Traefik
Предполагается что у читателя установлены и настроены `docker` и `docker-compose`, их установка выходит за рамки этой статьи. Предполагается, что у читателя установлены и настроены `docker` и `docker-compose`. Установить можно [тут](../install.md)
Создадим в домашней папке пользователя папку `traefik`, в которой будем хранить всю конфигурацию, и перейдем в эту папку Создадим в домашней папке пользователя папку `traefik`, в которой будем хранить всю конфигурацию, и перейдем в эту папку
@ -49,7 +55,7 @@ cd ~/traefik
version: '3.9' version: '3.9'
services: services:
traefik: traefik:
image: traefik:v2.10 image: traefik:v2.10 # Лучше не использовать тег latest
container_name: traefik container_name: traefik
restart: unless-stopped restart: unless-stopped
security_opt: security_opt:
@ -58,9 +64,9 @@ services:
- 80:80 - 80:80
- 443:443 - 443:443
volumes: volumes:
- /etc/localtime:/etc/localtime:ro - /etc/localtime:/etc/localtime:ro # for localtime
- /var/run/docker.sock:/var/run/docker.sock:ro - /var/run/docker.sock:/var/run/docker.sock:ro # Docker Socket
- ./data/traefik.yml:/traefik.yml:ro - ./data/traefik.yml:/traefik.yml:ro # static config
``` ```
Во внешний мир будут смотреть порты 80 и 443 для HTTP и HTTPS соответственно. Также пробросим в контейнер сокет демона Docker для работы механизма автоматической конфигурации. Конфигурацию Traefik будем описывать в файле `traefik.yml` находящемся в папке `data` в текущей директории. Во внешний мир будут смотреть порты 80 и 443 для HTTP и HTTPS соответственно. Также пробросим в контейнер сокет демона Docker для работы механизма автоматической конфигурации. Конфигурацию Traefik будем описывать в файле `traefik.yml` находящемся в папке `data` в текущей директории.
@ -70,6 +76,7 @@ services:
Создадим и будем постепенно наполнять этот файл. Создадим и будем постепенно наполнять этот файл.
Для начала опишем точки входа в наш прокси (те самые порты, которые смотрят во внешний мир): Для начала опишем точки входа в наш прокси (те самые порты, которые смотрят во внешний мир):
```yaml ```yaml
entryPoints: entryPoints:
http: http:
@ -89,7 +96,7 @@ providers:
exposedByDefault: false exposedByDefault: false
``` ```
Параметром указываем что Traefik не должен брать все контейнеры подряд, далее будет объяснено каким образом мы будем сообщать какие контейнеры нас интересуют. Также здесь видно зачем мы пробрасывали сокет в контейнер — именно через него Traefik будет получать сведения о запускаемых контейнерах на этом хосте (можно подключиться и к демону на другом хосте). Параметром `exposedByDefault` указываем, что Traefik не должен брать все контейнеры подряд, далее будет объяснено каким образом мы будем сообщать какие контейнеры нас интересуют. Также здесь видно зачем мы пробрасывали сокет в контейнер — именно через него Traefik будет получать сведения о запускаемых контейнерах на этом хосте (можно подключиться и к демону на другом хосте).
Следующим шагом развернем весь HTTP трафик в HTTPS (почему это было сделано именно таким образом будет описано дальше): Следующим шагом развернем весь HTTP трафик в HTTPS (почему это было сделано именно таким образом будет описано дальше):
@ -117,10 +124,10 @@ Traefik может проксировать не только HTTP трафик,
Рассмотрим на примере описанного выше роутера: Рассмотрим на примере описанного выше роутера:
- `http-catchall` — имя роутера, может быть любым, но обязано быть уникальным в рамках блока `http` всей конфигурации Traefik; - `http-catchall` — имя роутера, может быть любым, но обязано быть уникальным в рамках блока `http` всей конфигурации **Traefik**
- `rule:` — правило, описывает какой трафик попадает в этот роутер, в данном случае описывается `HostRegexp`, то есть поле `Host` запроса должно попадать под регулярное выражение `.+` (то есть любое), здесь мы видим специфику регулярных выражений в Traefik — оно должно быть заключено в фигурные скобки и иметь наименование (`host` в данном случае), то есть синтаксис имеем вид `{name:reg_exp}`; - `rule` — правило, описывает какой трафик попадает в этот роутер, в данном случае описывается `HostRegexp`, то есть поле `Host` запроса должно попадать под регулярное выражение `.+` (то есть любое). Синтаксис имеет вид `{name:reg_exp}`
- `entrypoints` — массив описанных ранее точек входа, которые будут использоваться этим роутером, в нашем случае используем только `http`; - `entrypoints` — массив описанных ранее точек входа, которые будут использоваться этим роутером, в нашем случае используем только `http`
- `middlewares` — массив промежуточных обработчиков, куда попадает трафик перед передачей к сервису (сервисы будут рассмотрены позднее). - `middlewares` — массив промежуточных обработчиков, куда попадает трафик перед передачей к сервису (сервисы будут рассмотрены позднее)
Подробнее о различных видах правил можно прочитать в [документации](https://docs.traefik.io/routing/routers/#rule). Подробнее о различных видах правил можно прочитать в [документации](https://docs.traefik.io/routing/routers/#rule).
@ -133,6 +140,8 @@ Traefik может проксировать не только HTTP трафик,
Подробнее о различных обработчиках можно прочитать в [документации](https://docs.traefik.io/middlewares/overview/) (дальше в статье будет описан ещё один обработчик — BasicAuth). Подробнее о различных обработчиках можно прочитать в [документации](https://docs.traefik.io/middlewares/overview/) (дальше в статье будет описан ещё один обработчик — BasicAuth).
## Файл конфиурации
??? note "Полностью файл traefik.yml" ??? note "Полностью файл traefik.yml"
```yaml ```yaml
entryPoints: entryPoints:
@ -159,15 +168,17 @@ Traefik может проксировать не только HTTP трафик,
permanent: false permanent: false
``` ```
Таким образом мы получим первую рабочую конфигурацию. Выполняем Таким образом мы получим первую рабочую конфигурацию. Выполняем:
```bash ```bash
sudo docker-compose up -d sudo docker-compose up -d
``` ```
И прокси должен подняться, можно почитать логи (`sudo docker-compose logs -f`) и убедиться, что всё работает. И прокси должен подняться, можно почитать логи (`sudo docker-compose logs -f`) и убедиться, что всё работает.
## Lets Encrypt ## Lets Encrypt
Поскольку мы хотим использовать HTTPS нам нужно где-то взять SSL сертификаты для сервисов, есть возможность использовать свои сертификаты, но мы настроем автоматическое получение бесплатных сертификатов от Lets Encrypt. Поскольку мы хотим использовать HTTPS, нам нужно где-то взять SSL сертификаты для сервисов. У нас есть возможность использовать свои сертификаты, но мы настроем автоматическое получение бесплатных сертификатов от **Lets Encrypt**.
Добавим в конфигурацию (`traefik.yml`) новый блок: Добавим в конфигурацию (`traefik.yml`) новый блок:
@ -181,17 +192,17 @@ certificatesResolvers:
httpChallenge: httpChallenge:
entryPoint: http entryPoint: http
``` ```
Здесь: Здесь:
- `letsEncrypt` — это просто имя резолвера;
- `acme` — тип резолвера (других типов в общем-то и нет); - `letsEncrypt` — это просто имя резолвера
- `storage` — файл, в котором хранятся сведения о полученных сертификатах; - `acme` — тип резолвера (других типов в общем-то и нет)
- `httpChallenge` — тип acme-челенжа, дополнительно указываем параметр — точку входа; - `storage` — файл, в котором хранятся сведения о полученных сертификатах
- `httpChallenge` — тип acme-челенжа, дополнительно указываем параметр — точку входа
- `caServer: "https://acme-staging-v02.api.letsencrypt.org/directory"` — позволяет использовать не основной сервер Lets Encrypt в тестовых целях, так как основной имеет строгие лимиты API (можно закомментировать, когда наладите получение сертификатов). - `caServer: "https://acme-staging-v02.api.letsencrypt.org/directory"` — позволяет использовать не основной сервер Lets Encrypt в тестовых целях, так как основной имеет строгие лимиты API (можно закомментировать, когда наладите получение сертификатов).
Также дополним пункт `volumes` в файле `docker-compose.yml`, чтобы сохранять сертификаты при перезапуске контейнера (предварительно создав файл `data/acme.json`): Также дополним пункт `volumes` в файле `docker-compose.yml`, чтобы сохранять сертификаты при перезапуске контейнера (предварительно создав файл `data/acme.json`):
```yaml ```yaml hl_lines="5"
volumes: volumes:
- /etc/localtime:/etc/localtime:ro - /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro - /var/run/docker.sock:/var/run/docker.sock:ro
@ -215,20 +226,21 @@ HTTPS настроен, пришло время поднять первый се
- "traefik.http.services.traefik-traefik.loadbalancer.server.port=888" - "traefik.http.services.traefik-traefik.loadbalancer.server.port=888"
``` ```
Разберем построчно: Разберем построчно:
- `traefik.enable=true` — указываем что Traefik должен обеспечить - `traefik.enable=true` — указываем что Traefik должен обеспечить
доступ к этому контейнеру, необходимо для всего остального; доступ к этому контейнеру, необходимо для всего остального
- `traefik.http.routers.traefik.entrypoints=https` — создаем новый - `traefik.http.routers.traefik.entrypoints=https` — создаем новый
роутер с точной входа `https`; роутер с точной входа `https`
- `traefik.http.routers.traefik.rule=Host(`traefik.example.com`)` — - `traefik.http.routers.traefik.rule=Host(`traefik.example.com`)` —
роутер будет жить по адресу traefik.example.com; роутер будет жить по адресу traefik.example.com
- `traefik.http.routers.traefik.tls=true` — указываем что используется - `traefik.http.routers.traefik.tls=true` — указываем что используется
TLS; TLS
- `traefik.http.routers.traefik.tls.certresolver=letsEncrypt` - `traefik.http.routers.traefik.tls.certresolver=letsEncrypt`
указываем через какой резолвер получать сертификат; указываем через какой резолвер получать сертификат
- `traefik.http.routers.traefik.service=api@internal` — указываем, что - `traefik.http.routers.traefik.service=api@internal` — указываем, что
сервер за этим роутером — `api@internal`, это специальный сервис, сервер за этим роутером — `api@internal`, это специальный сервис,
созданный по умолчанию, это как раз и есть дашбоард который мы хотели созданный по умолчанию, это как раз и есть дашбоард который мы хотели
увидеть; увидеть
- `traefik.http.services.traefik-traefik.loadbalancer.server.port=888` - `traefik.http.services.traefik-traefik.loadbalancer.server.port=888`
— издержки интерфейса, без этого не заработает, но можно написать — издержки интерфейса, без этого не заработает, но можно написать
абсолютно любую цифру. абсолютно любую цифру.
@ -248,25 +260,26 @@ sudo docker-compose down && sudo docker-compose up -d
Когда всё поднимется можно перейти на `traefik.example.com` (тут на самом деле должен быть ваш домен, который направлен на хост с Traefik) и увидеть дашборд. Когда всё поднимется можно перейти на `traefik.example.com` (тут на самом деле должен быть ваш домен, который направлен на хост с Traefik) и увидеть дашборд.
Дашбоард это хорошо, но мы не хотим, чтобы все пользователи интернета имели к нему доступ, закроем его от внешнего мира с помощью BasicAuth, для это в Traefik есть специальный middleware. Дашбоард это хорошо, но мы не хотим, чтобы все пользователи интернета имели к нему доступ, закроем его от внешнего мира с помощью BasicAuth, для это в Traefik есть специальный *middleware*.
Для начала сгенерируем для нас строку с логином и паролем (admin/password)^ Для начала сгенерируем для нас строку с логином и паролем (admin/password):
```bash ```bash
$ htpasswd -nb admin password $ htpasswd -nb admin password
admin:$apr1$vDSqkf.v$GTJOtsd9CBiAFFnHTI2Ds1 admin:$apr1$vDSqkf.v$GTJOtsd9CBiAFFnHTI2Ds1
``` ```
Теперь добавим в наш `docker-compose.yml` новые строчки: Теперь добавим в наш `docker-compose.yml` новые строчки:
```yaml ```yaml
- "traefik.http.middlewares.traefik-auth.basicauth.users=admin:$$apr1$$vDSqkf.v$$GTJOtsd9CBiAFFnHTI2Ds1" - "traefik.http.middlewares.traefik-auth.basicauth.users=admin:$$apr1$$vDSqkf.v$$GTJOtsd9CBiAFFnHTI2Ds1"
- "traefik.http.routers.traefik.middlewares=traefik-auth" - "traefik.http.routers.traefik.middlewares=traefik-auth"
``` ```
Заметим, что символы `$` из полученной строки мы должны заменить на `$$`. Заметим, что символы `$` из полученной строки мы должны заменить на `$$`.
- `traefik.http.middlewares.traefik-auth.basicauth.users=...` — создаем middleware типа `basicauth` с параметром `users`;
- `traefik.http.routers.traefik.middlewares=traefik-auth` — указываем что роутер `traefik` использует только что-то созданный middleware. - `traefik.http.middlewares.traefik-auth.basicauth.users=...` — создаем middleware типа `basicauth` с параметром `users`
- `traefik.http.routers.traefik.middlewares=traefik-auth` — указываем что роутер `traefik` использует только что-то созданный middleware
??? note "Весь docker-compose.yml" ??? note "Весь docker-compose.yml"
```yaml ```yaml
@ -294,6 +307,8 @@ admin:$apr1$vDSqkf.v$GTJOtsd9CBiAFFnHTI2Ds1
- "traefik.http.routers.traefik.tls.certresolver=letsEncrypt" - "traefik.http.routers.traefik.tls.certresolver=letsEncrypt"
- "traefik.http.routers.traefik.service=api@internal" - "traefik.http.routers.traefik.service=api@internal"
- "traefik.http.services.traefik-traefik.loadbalancer.server.port=888" - "traefik.http.services.traefik-traefik.loadbalancer.server.port=888"
- "traefik.http.middlewares.traefik-auth.basicauth.users=admin:$$apr1$$vDSqkf.v$$GTJOtsd9CBiAFFnHTI2Ds1"
- "traefik.http.routers.traefik.middlewares=traefik-auth"
``` ```
Теперь при попытке доступа к дашборду у нас спросят логин и пароль. Теперь при попытке доступа к дашборду у нас спросят логин и пароль.
@ -318,7 +333,7 @@ admin:$apr1$vDSqkf.v$GTJOtsd9CBiAFFnHTI2Ds1
Добавим в `docker-compose.yml` ещё один `volume`: Добавим в `docker-compose.yml` ещё один `volume`:
```yaml ```yaml hl_lines="5"
volumes: volumes:
- /etc/localtime:/etc/localtime:ro - /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro - /var/run/docker.sock:/var/run/docker.sock:ro
@ -333,7 +348,6 @@ admin:$apr1$vDSqkf.v$GTJOtsd9CBiAFFnHTI2Ds1
```yaml ```yaml
providers: providers:
...
file: file:
directory: /custom directory: /custom
watch: true watch: true
@ -370,7 +384,7 @@ http:
loadBalancer: loadBalancer:
servers: servers:
- хосты для балансировки нагрузки - хосты для балансировки нагрузки
- ... #- ...
``` ```
Дополнительно мы указываем параметр `passHostHeader: true` чтобы тот хост думал, что он на самом деле смотрит в сеть и прокси нет. Дополнительно мы указываем параметр `passHostHeader: true` чтобы тот хост думал, что он на самом деле смотрит в сеть и прокси нет.

@ -0,0 +1,33 @@
# TCP Routes
Начинав со скромной установки домашней лабы на базе самосборного ПК на 4 диска и хостинга на нем Plex, я за 5 лет начучился поднимать с запускать различные полезные вещи для дома.
Сейчас у меня есть несколько доменов с различным сервисами. Где то год назад я понял, что надо разделать сервисы по типу. Но была проблема - поскульку сервисы находятся на 3 и более разных хостах докера, то прописывать правила в Traefik нужно было на главном. Это было как бы норм, но не совсем удобно.
Поэтому я начал изучать, как можно было бы вынести конфиги и сам Траефик на разные хосты. И решение это TCP Route.
По сути, это TCP-маршрутизатор делающий следующее: если есть запросы, адресованные домен2 или его субдоменам, то запрос передается второму экземпляру Traefik, который прослушивает адрес 192.168.100.254:443 на другом моем хосте.
![TCP Route](../../images/docker/traefik-tcp-routes.png)
Для того, чтобы реализовать это, нужно создать файл yml в папке rules с определением route TCP:
```yml title="tcp-domain2.yml"
tcp:
routers:
tcp-domain2-rtr:
entryPoints:
- "https"
rule: "HostSNIRegexp(`domain2.com`, `{subdomain:[a-z]+}.domain2.com`)"
service: tcp-domain2-svc
tls:
passthrough: true
services:
tcp-domain2-svc:
loadBalancer:
servers:
- address: "192.168.100.254:443"
```
Правда все равно есть большое НО:
!!! warning
Если основной экземпляр Traefik не работает, то и TCP Route работать тоже не будет!

@ -0,0 +1,26 @@
# WikiJS
```yaml
version: "3.7"
networks:
traefik_net:
external: true
services:
wikijs:
image: lscr.io/linuxserver/wikijs
container_name: wikijs
environment:
PUID: $PUID
PGID: $PGID
TZ: $TZ
networks:
- traefik_net
volumes:
- $DOCKER_APP/wiki/config:/config
- $DOCKER_APP/wiki/data:/data
ports:
- 4000:3000
restart: unless-stopped
```

@ -1,28 +1,26 @@
# Настройка и использование консольных команд Админа в ARK: Survival Evolved
# Настройка и использование консольных команд Админа в Ark Survival Evolved Как использовать администраторские команды консоли в **ARK: Survival Evolved**? Для этого потребуется открыть консоль, нажав кнопку **TAB**.
Некоторые из этих команд будут недоступны, пока вы не выполнили аутентификацию с помощью команды `enablecheats`.
Как использовать администраторские команды консоли в **Ark: Survival Evolved**? Для этого потребуется открыть консоль, нажав кнопку **TAB**. Команды, отмеченные тегом `_cheat_` должны указываться с префиксом `admincheat`.
Некоторые из этих команд будут недоступны, пока вы не выполнили аутентификацию с помощью команды **enablecheats**.
Команды, отмеченные тегом _cheat_ должны указываться с префиксом **admincheat**.
## Использование ## Использование
### Первый способ ### Первый способ
1. Выключаем сервер. 1. Выключаем сервер.
2. В конфиге сервера **GameUserSettings.ini** указываем пароль администратора переменной **ServerAdminPassword.** (Пример: _ServerAdminPassword password_). 2. В конфиге сервера `GameUserSettings.ini` указываем пароль администратора переменной `ServerAdminPassword`. (Пример: `ServerAdminPassword password`).
3. Включаем сервер. 3. Включаем сервер.
4. Заходим в игру и на сервер, открываем консоль нажатием кнопки **TAB**. 4. Заходим в игру и на сервер, открываем консоль нажатием кнопки **TAB**.
5. Авторизируемся на сервере как администратор указывая команду: **enablecheats «AdminPassword».** (Пример: enablecheats password). 5. Авторизируемся на сервере как администратор указывая команду: `enablecheats AdminPassword`. (Пример: `enablecheats password`).
### Второй способ ### Второй способ
Добавляем игроков в белый список. Добавляем игроков в белый список.
1. Выключаем сервер. 1. Выключаем сервер.
2. Создать файл **AllowedCheaterSteamIDs.txt** (_Путь: ShooterGame/Saved/AllowedCheaterSteamIDs.txt_). 2. Создать файл `AllowedCheaterSteamIDs.txt` (Путь: `ShooterGame/Saved/AllowedCheaterSteamIDs.txt`).
3. Указать Steam ID игрока, если администраторов несколько, Steam ID нужно указывать с новой строчки. 3. Указать Steam ID игрока, если администраторов несколько, Steam ID нужно указывать с новой строчки.
4. Включаем сервер. 4. Включаем сервер.
5. Авторизация на сервере командой **enablecheats «AdminPassword»** не требуется. 5. Открываем графическую админку командой `ShowMyAdminManager`.
6. Открываем графическую админку командой **ShowMyAdminManager**.

@ -0,0 +1,26 @@
# Схемы сообщества
## Basic Mining and Smelting
[![](https://i.imgur.com/2CpZvSv.jpeg)](https://factorioprints.com/view/-KoluN5jvWgI0egykK_W)
![](https://imgur.com/a/LsUJ3id)
## Modular Rail Network
[![](https://i.imgur.com/7UHaFA1.jpeg)](https://www.factorio.school/view/-K_VpUtsGAlQeBuZ1oez)
## Tileable Science Production 0.17-1.0 - Early to Mid Game
[![](http://i.imgur.com/42RoMSil.jpeg)](https://www.factorio.school/view/-KnQ865j-qQ21WoUPbd3)
## ☀️ Power Book ☢️ - Compact, Tileable, No Waste Nuclear, Solar, Steam
[![](http://i.imgur.com/EL5C7TOl.jpeg)](https://www.factorio.school/view/-Kn2afLokZdBO-uHcIAF)
## Cityblock
![](https://curiouscoding.nl/misc/factorio-early-game/)
### Updated 100x100 City Blocks - Snapped to Grid
[![](http://i.imgur.com/TeMNCxMl.jpeg)](https://www.factorio.school/view/-MOy8SsNcu5BNqCZ2ZnL)

@ -0,0 +1,114 @@
# Factorio
## Мирный режим
Ввод команды, отключит ачивки
```
/c game.player.print(game.player.surface.peaceful_mode);
```
## Различные ссылки
[Рисовать в онлайне](https://fbe.teoxoy.com/)
[Factorio Cheat Sheets](https://factoriocheatsheet.com/)
[Хранилище чертежей](https://www.factorio.school/)
[Моды для сервера](https://mods.factorio.com/)
[Введение в поезда](https://forums.factorio.com/viewtopic.php?f=194&t=18621)
[Балансировщики разгрузки1](https://forums.factorio.com/viewtopic.php?f=194&t=71921) и [Балансировщики разгрузки1](http://greenlightning.eu/games/factorio-train-balancer/)
[Калькулятор производства](https://kirkmcdonald.github.io/calc.html)
[Чертежи для BobS](https://pastebin.com/u/fed1s)
## Мод-лист
| Мод | Ссылка | Описание |
|--|--|--|
| Additional turrets | https://mods.factorio.com/mod/Additional-Turret-updated | Добавляет больше турелей и щитов |
| Advanced Logistics System Fork | https://mods.factorio.com/mod/advanced-logistics-system-fork | Мониторинг ресурсов и сети |
| Auto Research | https://mods.factorio.com/mod/some-autoresearch | Автоматизирует исследования. Переключите графический интерфейс с помощью Shift+T |
| Auto Deconstruct | https://mods.factorio.com/mod/AutoDeconstruct | Этот мод отмечает буры, у которых больше нет ресурсов для добычи для разрушения |
| Automatic Train Painter | https://mods.factorio.com/mod/Automatic_Train_Painter | Автоматически раскрашивает локомотивы и вагоны в зависимости от их содержимого. |
| Belt Balancer (Improved Performance) | https://mods.factorio.com/mod/belt-balancer-performance | Добавляет детали балансира, которые можно собрать вместе, чтобы сбалансировать все регулируемые полосы |
| Bottleneck Lite | https://mods.factorio.com/mod/BottleneckLite | Инструмент для поиска узких мест на вашем заводе |
| Clock | https://mods.factorio.com/mod/clock | Добавляет часы |
| Clockwork | https://mods.factorio.com/mod/Clockwork | Изменяет параметры солнечного цикла |
| Deadlock's Stacking Beltboxes & Compact Loaders | https://mods.factorio.com/mod/deadlock-beltboxes-loaders | Добавляет минималистичные загрузчики 1x1 и ленточные ящики-штабелеры для 5-кратного сжатия |
| Jetpack | https://mods.factorio.com/mod/jetpack | Позволяет создавать реактивный ранец, позволяющий летать на высоких скоростях |
| Lighted Electric Poles + | https://mods.factorio.com/mod/LightedPolesPlus | Добавляет копию каждого электрического столба, включая модифицированные, со встроенным фонарем. |
| Loader Redux | https://mods.factorio.com/mod/LoaderRedux | Добавляет загрузчики. Переписан адд-загрузчик с новой логикой и графикой привязки загрузчика |
| LTN - Logistic Train Network | https://mods.factorio.com/mod/LogisticTrainNetwork | Добавляет остановки логистических поездов, выступающие в качестве опорных точек |
| LTN Combinator Modernized | https://mods.factorio.com/mod/LTN_Combinator_Modernized | Добавьте комбинатор с дружественным графическим интерфейсом для управления сигналами управления LTN для каждой остановки поезда LTN. |
| LTN Content Reader | https://mods.factorio.com/mod/LTN_Content_Reader | Отображение содержимого поставщика и запросчика LTN для определенных идентификаторов сети в качестве вывода комбинатора.|
| LTN Language Pack | https://mods.factorio.com/mod/LTN_Language_Pack | Локализации для LTN |
| LTN Manager | https://mods.factorio.com/mod/LtnManager | Графический интерфейс для управления вашей сетью логистических поездов |
| Miniloader | https://mods.factorio.com/mod/miniloader | Компактные и удобные для работы с ИБП погрузчики 1x1 |
| Russian locale for some mods 2 | https://mods.factorio.com/mod/MyRUS2 | Очередной русификатор для нескольких модов |
| RUSLocalizationsModsForFactorio | https://mods.factorio.com/mod/RUSLocalizationsModsForFactorio | Перевод модов на: Русский язык. |
| Nixie Tubes | https://mods.factorio.com/mod/nixie-tubes | Добавляет газоразрядные трубки для отображения значений из подключенной сети |
| Noxys Waterfill | https://mods.factorio.com/mod/Noxys_Waterfill | Различные размещаемые воды. Очень настраиваемый. |
| Omega Drill | https://mods.factorio.com/mod/OmegaDrill | Добавляет большую мощную дрель. |
| Picker Dollies | https://mods.factorio.com/mod/PickerDollies | Перемещайте большинство размещенных объектов быстро и легко. |
| Placeables | https://mods.factorio.com/mod/Placeables | Окно в стиле панели быстрого доступа, в котором показаны все предметы, которые вы можете использовать для строительства |
| Power Armor MK3 | https://mods.factorio.com/mod/Power%20Armor%20MK3 | Силовая броня MK3 и MK4 |
| Quality of Life research | https://mods.factorio.com/mod/qol_research | Добавляет бонусы и, при необходимости, исследование больших сумок |
| Repair Turret | https://mods.factorio.com/mod/Repair_Turret | Добавляет ремонтные турели |
| Reverse Factory | https://mods.factorio.com/mod/reverse-factory | Машина Reverse Factory переработает (переработает) практически любой предмет |
| Resource Spawner Overhaul | https://mods.factorio.com/mod/rso-mod | Переработана система появления ресурсов. |
| Simulation Helper | https://mods.factorio.com/mod/simhelper | Вспомогательные скрипты для создания симуляций |
| Skandragon's Fusion Robots | https://mods.factorio.com/mod/skan-fusion-robots | Дорогие роботы, которым не нужна подзарядка. |
| Solar Calculator | https://mods.factorio.com/mod/solar-calc | Добавляет калькулятор солнечной энергии |
| Space Extension Mod (SpaceX) | https://mods.factorio.com/mod/SpaceMod | Значительно расширить конечную игру |
| Squeak Through | https://mods.factorio.com/mod/Squeak%20Through | Позволяет вам проходить между тем, что раньше было препятствиями |
| Factorio Standard Library | https://mods.factorio.com/mod/stdlib | Стандартная библиотека Factorio |
| YARM - Resource Monitor | https://mods.factorio.com/mod/YARM | Этот мод поможет вам отслеживать ваши сайты добычи полезных ископаемых |
## Quality Of Life:
| Мод | Ссылка | Описание |
|--|--|--|
| Enhanced Map Colors | [![](https://img.shields.io/badge/dynamic/json?query=downloads_count&suffix=%20downloads&label&color=orange&url=https%3A%2F%2Fmods.factorio.com%2Fapi%2Fmods%2FEnhanced_Map_Colors)](https://mods.factorio.com/mod/Enhanced_Map_Colors) | Добавляет цвет к объектам на карте/мини-карте для контраста. Помогает читаемости карт |
| Even Distribution Lite | [![](https://img.shields.io/badge/dynamic/json?query=downloads_count&suffix=%20downloads&label&color=orange&url=https%3A%2F%2Fmods.factorio.com%2Fapi%2Fmods%2FEvenDistributionLite)](https://mods.factorio.com/mod/EvenDistributionLite) | Равномерно распределите элементы между объектами с помощью Ctrl+перетаскивания |
| Factorio Library | [![](https://img.shields.io/badge/dynamic/json?query=downloads_count&suffix=%20downloads&label&color=orange&url=https%3A%2F%2Fmods.factorio.com%2Fapi%2Fmods%2Fflib)](https://mods.factorio.com/mod/flib) | Набор высококачественных, часто используемых утилит для создания модов Factorio |
| Fluid Level Indicator | [![](https://img.shields.io/badge/dynamic/json?query=downloads_count&suffix=%20downloads&label&color=orange&url=https%3A%2F%2Fmods.factorio.com%2Fapi%2Fmods%2FFluid-level-indicator)](https://mods.factorio.com/mod/Fluid-level-indicator) | Цифровой дисплей, показывающий уровень жидкости/газа в системе |
| Fluid Must Flow | [![](https://img.shields.io/badge/dynamic/json?query=downloads_count&suffix=%20downloads&label&color=orange&url=https%3A%2F%2Fmods.factorio.com%2Fapi%2Fmods%2FFluidMustFlow)](https://mods.factorio.com/mod/FluidMustFlow) | Добавляет очень большие трубы с огромной пропускной способностью |
| FNEI | [![](https://img.shields.io/badge/dynamic/json?query=downloads_count&suffix=%20downloads&label&color=orange&url=https%3A%2F%2Fmods.factorio.com%2Fapi%2Fmods%2FFNEI)](https://mods.factorio.com/mod/FNEI) | Все рецепты предметов и их использование |
| Helmod | [![](https://img.shields.io/badge/dynamic/json?query=downloads_count&suffix=%20downloads&label&color=orange&url=https%3A%2F%2Fmods.factorio.com%2Fapi%2Fmods%2Fhelmod)](https://mods.factorio.com/mod/helmod) | Помощник по планированию вашего завода. Может рассчитывать необходимые ингредиенты |
| Honk | [![](https://img.shields.io/badge/dynamic/json?query=downloads_count&suffix=%20downloads&label&color=orange&url=https%3A%2F%2Fmods.factorio.com%2Fapi%2Fmods%2FHonk)](https://mods.factorio.com/mod/Honk) | Поезда сигналят при остановке или при старте |
## Bob & Angels Mods:
| Мод | Ссылка | Описание |
|--|--|--|
| Angel's Infinite Ores | https://mods.factorio.com/mod/angelsinfiniteores | Добавляет бесконечные руды для базовой игры, Bobmods, Yuoki Industries, Uranium Power, Nucular, Dark Matter Replicators и базовые руды для AngelsRefining |
| Bob's Functions Library | https://mods.factorio.com/mod/boblibrary | Добавляет ряд полезных функций, используемых Bob's Mods |
| Bob & Angel RAWs patch | https://mods.factorio.com/mod/baraws | Мод, улучшающий качество жизни, позволяющий рецептам Боба и Ангела отображать разумные сырые ингредиенты (даже в творческом режиме) |
| Bob's Assembling machines | https://mods.factorio.com/mod/bobassembly | Добавляет сборочные машины 4, 5 и 6. А также другие машины более высоких уровней |
| Bob's Electronics | https://mods.factorio.com/mod/bobelectronics | Добавляет совершенно новую цепочку производства электроники |
| Bob's Personal Equipment | https://mods.factorio.com/mod/bobequipment | Расширяет набор оборудования, доступного в базовом моде для модульной брони |
| Bob's Greenhouse | https://mods.factorio.com/mod/bobgreenhouse | Это теплица, она делает дрова |
| Bob's Adjustable Inserters | https://mods.factorio.com/mod/bobinserters | Добавляет горячие клавиши и графический интерфейс для настройки мест захвата и опускания устройства вставки |
| Bob's Logistics | https://mods.factorio.com/mod/boblogistics | Добавляет вещи, связанные с логистикой |
| Bob's Mining | https://mods.factorio.com/mod/bobmining | Добавляет некоторые полезные инструменты и объекты для майнинга |
| Bob's Modules | https://mods.factorio.com/mod/bobmodules | Расширение системы модулей |
| Bob's Ores | https://mods.factorio.com/mod/bobores | Добавляет полезные руды |
| Bob's Metals, Chemicals and Intermediates | https://mods.factorio.com/mod/bobplates | Переплавляйте лишнюю руду в пластины |
| Bob's Power | https://mods.factorio.com/mod/bobpower | Добавляет новые силовые структуры |
| Bob's Revamp | https://mods.factorio.com/mod/bobrevamp | Реструктуризация технологии и рецептуры |
| Bob's Tech | https://mods.factorio.com/mod/bobtech | Расширение исследований |
| Bob's Vehicle Equipment | https://mods.factorio.com/mod/bobvehicleequipment | Ассортимент оборудования для использования в автомобилях |
| Bob's Warfare | https://mods.factorio.com/mod/bobwarfare | Делайте вещи для войны |
| Deadlock Stacking For Bobs | https://mods.factorio.com/mod/DeadlockStackingForBobs | Добавьте сложенные предметы для Bob's |
## Industrial Revolution 3
| Мод | Ссылка | Описание |
|--|--|--|
| Industrial Revolution 3 | https://mods.factorio.com/mod/IndustrialRevolution3 | Мод капитальной переделки, основанный на прогрессе материалов. |

@ -0,0 +1,12 @@
# Мои чертежи
## Общий список
https://factoriobin.com/post/hO1MHt1w
https://factoriobin.com/post/vecpV5WR
## Модульный City Block
https://www.factorio.school/view/-NASu1FyHhUm8blKeUF8

@ -0,0 +1,52 @@
# Коды терминалов No Mans Sky
1-3-4-7-11-18-**29**
1-5-3-7-5-9-**7**
1-2-6-24-120-**720**
2-4-12-48-240-**1440**
3-5-8-13-21-**34**
5-14-41-122-**365**
17-33-65-129-**257**
23-45-89-177-**353**
56-59-63-68-74-**81**
80-71-63-56-**50**
99-92-86-81-**77**
1027-7101-2710-**0271**
1126-6112-2611-**1261**
1181-1118-8111-**1811**
1212-2121-1212-**2121**
1265-5126-6512-**2651**
1345-5134-4513-**3451**
1702-7021-0217-**2170**
1737-7173-3717-**7371**
2109-1092-0921-**9210**
2230-0223-3022-**2302**
2379-9237-7923-**3792**
2595-5259-9525-**5952**
2738-7382-3827-**8273**
3382-2338-8233-**3823**
3908-9083-0839-**8390**
3941-9413-4139-**1394**
3987-9873-8739-**7398**
4416-6141-1641-**4164**
4366-3664-6643-**6436**
4634-6344-3446-**4463**
4865-8654-6548-**5486**
5040-720-120-24-**6**
5047-7504-4750-**0475**
5336-3365-3653-**6533**
5493-3549-9354-**4935**
5571-1557-7155-**5715**
5920-9205-2059-**0592**
6543-3654-4365-**5436**
6618-8661-1866-**6186**
7354-3547-5473-**4735**
7771-1777-7177-**7717**
8104-4810-0481-**1048**
8432-2843-3284-**4328**
8653-3865-5386-**6538**
9162-1629-6291-**2916**
9183-1839-8391-**3918**
9214-4921-1492-**2149**
9780-7809-8097-**0978**
9854-4985-5498-**8549**

@ -0,0 +1,53 @@
# Полезные инструменты
## Сайты
[NeverSink](https://github.com/NeverSinkDev/NeverSink-Filter) - Это лутфильтр для игры Path of Exile. Он скрывает малоценные предметы, использует схему наценок и звуки для выделения дорогого снаряжения и основан на анализе экономических данных.
[http://filterblade.xyz/](http://filterblade.xyz/https:/) - Самостоятельное создание лутфильта. Можно выбрать базу от NeverSink, поменять цвет и прочее.
[PoEDB](https://poedb.tw/us/) - в основном собранная из данных информация обо всем, что есть в игре (особенно полезно для крафта)
[PoE Builds](https://www.poebuilds.cc) — индексатор форумов, который сортирует сборки форума по категориям навыков.
[PoE-Profile](https://poe-profile.info/) - сайт, на котором можно проверить сборку и статистику игрока.
[poe-roadmap](https://poe-roadmap.com/) - Дорожная карта PoE для отслеживания драгоценных камней навыков и уникальных предметов, необходимых по мере вашего уровня.
[PoE Buddy](https://poe.technology/poebuddy) — удобный инструмент для просмотра сборок PoB в браузере.
[PoE Lab links](https://www.poelab.com/useful-links/) - список ресурсов
[exile-leveling](https://heartofphos.github.io/exile-levelin) - Сайт, для быстрого прохождения актов (англ)
## Софт
Trade Program [Acquisition](https://github.com/xyzz/acquisition) - Сбор предметов для продажи в Интернете (также позволяет искать предметы по модам и т. д. Очень полезно, если вы не хотите вручную искать life+resist или любую другую комбинацию)
[Лути! Stash](https://chrome.google.com/webstore/detail/looty-stash-search-for-pa/ajfbflclpnpbjkfibijekgcombcgehbi?hl=en-US) - расширение Chrome, которое позволяет находить вещи в тайнике
[Awakened PoE Trade](https://github.com/SnosMe/awakened-poe-tradehttps:/) - приложение, для проверки стоимости предметов в Path of Exile.
[POE Ninja](http://poe.ninja/) - Quick Pricing
[The POE Database](http://poedb.tw/us)
[Читшит](https://cheatsheet.monster/poe)
[Lailloken-UI](https://github.com/Lailloken/Lailloken-UI) - UI и QoL
[Trade Companions](https://github.com/lemasato/POE-Trades-Companion) - игровое наложение для удобной продажи предметов.
[Mercury Trade](https://github.com/Exslims/MercuryTrade) - еще один игровой оверлей, но с некоторыми дополнительными утилитами. (Очень полезно для торговли. Создавайте свои собственные наложения времени восстановления.)
[Lab Compass](https://github.com/yznpku/LabCompass) — для планирования лаборатории и упрощения ее работы. (Наложение для лаборатории)
[Path of Maps](http://pathofmaps.com) - (отслеживает прохождение карты и просматривает статистику)
[Exilence](https://github.com/viktorgullmark/exilence) - (используется для отслеживания снаряжения, валюты, карт и многого другого) вы и ваша группа)
[Path of Building](https://github.com/Openarl/PathOfBuilding) - для удобного анализа и создания сборки.
[Дерево навыков PoE](https://github.com/PoESkillTree/PoESkillTree) - для углубленного построения дерева навыков.
[Currency Cop](https://github.com/currency-cop/currency-cop/releases) (Посмотрите, сколько вы стоите!)

@ -0,0 +1,5 @@
# VanillaHUD Plus
https://gitlab.com/steam-test1/alternative-updates/-/wikis/VanillaHUD-Plus-Compatibility-Guide
https://modworkshop.net/mod/25629

@ -0,0 +1,5 @@
# Ссылки для Satisfactory
[Карта](https://satisfactory-calculator.com/ru/interactive-maphttps:/)
[Планер](https://satisfactory-calculator.com/ru/plannershttps:/)

@ -0,0 +1,216 @@
# Версии прошивки HPE iLo
Здесь собраны **последние версии прошивок ILO** для модуля удаленного управления серверами HP (Integrated Lights-Out)
***ОБНОВЛЕНО* 2023-05-28**
ILO1 : [ilo196.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1980791503/v97349/CP023365.scexe) (30-Apr-2014)
ILO2 : [ilo2_233.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p915269625/v148520/CP035238.scexe) (30-Mar-2018)
ILO3 : [ilo3_194.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1573561412/v189986/CP046328.scexe) (iLO3 v 1.94.2 06-Dec-2020)
ILO4 : [ilo4_282.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v218149/CP053894.scexe) (iLO4 v 2.82.5 06-Feb-2023)
ILO5 : [ilo5_291.bin](https://downloads.hpe.com/pub/softlib2/software1/fwpkg-ilo/p991377599/v231082/ilo5_291.fwpkg) (24-May-2023)
ILO6 : [ilo6_130.bin](https://downloads.hpe.com/pub/softlib2/software1/fwpkg-ilo/p788720876/v221408/ilo6_130.fwpkg) (07-Apr-2023)
Для получения файлов в формате .bin:
=== "Linux"
```
$ chmod +x CP022551.scexe
$ ./CP022551.scexe --unpack=/tmp/iLO3
$ ls -l /tmp/iLO3
..
ilo3_180.bin
..
```
=== "Windows"
используйте архиватор 7-zip:
![extract_ilo](https://pingtool.org/wp-content/uploads/2012/09/extract_ilo.png)
Старые версии прошивок:
??? note "ILO1"
[ilo187.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p308174093/v33430/CP006786.scexe)
[ilo188.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p308174093/v35729/CP006953.scexe)
[ilo189.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p308174093/v38868/CP007118.scexe)
[ilo191.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p308174093/v41461/CP007684.scexe)
[ilo192.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p308174093/v44421/CP008488.scexe)
[ilo193.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1980791503/v50126/CP009895.scexe)
[ilo194.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1980791503/v51876/CP010428.scexe)
[ilo195.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1980791503/v57149/CP011850.scexe)
??? note "ILO2"
[ilo2_120.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p308277578/v33150/CP006634.scexe)
[ilo2_122.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p308280586/v33324/CP006747.scexe)
[ilo2_124.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p308280586/v35700/CP006942.scexe)
[ilo2_126.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p308280586/v39551/CP007149.scexe)
[ilo2_129.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p308280586/v40736/CP007549.scexe)
[ilo2_130.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p308280586/v41965/CP007818.scexe)
[ilo2_135.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p308280586/v42540/CP007977.scexe)
[ilo2_140.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p308280586/v43257/CP008198.scexe)
[ilo2_142.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p308280586/v43790/CP008317.scexe)
[ilo2_143.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p308280586/v45110/CP008590.scexe)
[ilo2_150.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p308280586/v45689/CP008777.scexe)
[ilo2_160.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v47657/CP009237.scexe)
[ilo2_161.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v49242/CP009636.scexe)
[ilo2_170.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v49991/CP009857.scexe)
[ilo2_175.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v51453/CP010337.scexe)
[ilo2_177.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v52557/CP010541.scexe)
[ilo2_178.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v54329/CP011095.scexe)
[ilo2_179.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v55943/CP011535.scexe)
[ilo2_180.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v57485/CP011945.scexe)
[ilo2_181.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v58075/CP012108.scexe)
[ilo2_182.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v59643/CP012567.scexe)
[ilo2_183.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v98108/CP023549.scexe)
[ilo2_201.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v63249/CP013601.scexe)
[ilo2_205.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v65718/CP014256.scexe)
[ilo2_206.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v68054/CP014890.scexe)
[ilo2_207.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v71019/CP015685.scexe)
[ilo2_208.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v74437/CP016664.scexe)
[ilo2_209.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v75848/CP017013.scexe)
[ilo2_212.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v78468/CP017737.scexe)
[ilo2_213.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v80498/CP018259.scexe)
[ilo2_215.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v82920/CP019022.scexe)
[ilo2_220.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v85709/CP019821.scexe)
[ilo2_222.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v90711/CP021566.scexe)
[ilo2_223.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v91953/CP021881.scexe)
[ilo2_225.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v96369/CP023069.scexe)
[ilo2_227.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p915269625/v104866/CP025666.scexe)
[ilo2_228.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p915269625/v108120/CP026708.scexe)
[ilo2_229.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p915269625/v112310/CP027871.scexe)
[ilo2_230.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p915269625/v128193/CP032232.scexe)
[ilo2_231.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p915269625/v142909/CP033889.scexe)
[ilo2_232.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p915269625/v144949/CP034429.scexe)
??? note "ILO3"
[ilo3_187.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1573561412/v113322/CP028239.scexe)
[ilo3_100.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1255562964/v57781/CP012025.scexe)
[ilo3_105.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1255562964/v60837/CP012894.scexe)
[ilo3_110.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1255562964/v62116/CP013210.scexe)
[ilo3_115.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1255562964/v62444/CP013313.scexe)
[ilo3_116.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1255562964/v65714/CP014254.scexe)
[ilo3_120.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1255562964/v64722/CP014002.scexe)
[ilo3_126.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1255562964/v70182/CP015458.scexe)
[ilo3_128.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1255562964/v73832/CP016462.scexe)
[ilo3_150.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1255562964/v73060/CP016203.scexe)
[ilo3_155.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1255562964/v81459/CP018561.scexe)
[ilo3_157.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1255562964/v87094/CP020301.scexe)
[ilo3_161.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1255562964/v89960/CP021281.scexe)
[ilo3_165.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1255562964/v92752/CP022033.scexe)
[ilo3_170.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1255562964/v88836/CP020873.scexe)
[ilo3_180.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1255562964/v94618/CP022551.scexe)
[ilo3_182.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1573561412/v104114/CP025437.scexe)
[ilo3_185.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1573561412/v107245/CP026424.scexe)
[ilo3_187.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1573561412/v113322/CP028239.scexe)
[ilo3_188.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1573561412/v116231/CP029099.scexe)
[ilo3_189.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1573561412/v127869/CP032172.scexe)
[ilo3_190.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1573561412/v149362/CP035511.scexe)
[ilo3_191.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1573561412/v158427/CP037906.scexe)
[ilo3_192.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1573561412/v176309/CP042794.scexe)
[ilo3_193.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1573561412/v183969/CP044657.scexe)
??? note "ILO4"
[ilo4_101.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1950562118/v72782/CP016116.scexe)
[ilo4_105.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1950562118/v74710/CP016765.scexe)
[ilo4_110.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1950562118/v76510/CP017241.scexe)
[ilo4_113.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1457726527/v83089/CP019101.scexe)
[ilo4_120.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1457726527/v79401/CP017976.scexe)
[ilo4_122.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1457726527/v85901/CP019887.scexe)
[ilo4_130.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1950562118/v80804/CP018365.scexe)
[ilo4_132.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1950562118/v91629/CP021804.scexe)
[ilo4_140.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1457726527/v87181/CP020340.scexe)
[ilo4_150.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1457726527/v94428/CP022524.scexe)
[ilo4_151.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1457726527/v98384/CP023645.scexe)
[ilo4_153.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1457726527/v100933/CP024444.scexe)
[ilo4_200.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1457726527/v79407/CP017980.scexe)
[ilo4_202.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1457726527/v100330/CP024170.scexe)
[ilo4_203.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1457726527/v102910/CP025110.scexe)
[ilo4_210.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1457726527/v101197/CP024540.scexe)
[ilo4_211.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1892756734/v105467/CP025816.scexe)
[ilo4_220.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1950562118/v103093/CP025143.scexe)
[ilo4_222.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v111019/CP027514.scexe)
[ilo4_230.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v106715/CP026236.scexe)
[ilo4_231.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v112690/CP027992.scexe)
[ilo4_240.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v111237/CP027578.scexe)
[ilo4_242.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v117904/CP029630.scexe)
[ilo4_244.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v119757/CP030133.scexe)
[ilo4_250.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v112485/CP027911.scexe)
[ilo4_253.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v124470/CP031406.scexe)
[ilo4_254.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v133828/CP032620.scexe)
[ilo4_255.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v129421/CP032487.scexe)
[ilo4_260.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v142463/CP033806.scexe)
[ilo4_261.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v154294/CP036949.scexe)
[ilo4_262.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v160135/CP038290.scexe)
[ilo4_270.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v158634/CP037959.scexe)
[ilo4_272.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v170463/CP041058.scexe)
[ilo4_273.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v176128/CP042663.scexe)
[ilo4_275.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v182737/CP044405.scexe)
[ilo4_276.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v183797/CP044610.scexe)
[ilo4_277.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v188589/CP046020.scexe)
[ilo4_278.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v190650/CP046465.scexe)
[ilo4_279.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v204995/CP049647.scexe)
[ilo4_280.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v209058/CP050768.scexe)
[ilo4_281.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v213013/CP051872.scexe)
??? note "ILO5"
[ilo5_117.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v141254/CP033476.scexe)
[ilo5_120.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v138105/CP032773.scexe)
[ilo5_130.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v144224/CP034170.scexe)
[ilo5_135.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v153199/CP036661.scexe)
[ilo5_137.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v157138/CP037568.scexe)
[ilo5_139.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v159725/CP038198.scexe)
[ilo5_140.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v161986/cp038901.exe)
[ilo5_143.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v162234/RPMS/x86_64/firmware-ilo5-1.43-1.1.x86_64.rpm) *Linux RPM*
[ilo5_143.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v162231/cp038939.exe) *Windows exe*
[ilo5_145.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v168530/RPMS/x86_64/firmware-ilo5-1.45-1.1.x86_64.rpm) *Linux RPM*
[ilo5_145.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v168528/cp040393.exe) *Windows exe*
[ilo5_146.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v169508/RPMS/x86_64/firmware-ilo5-1.46-1.1.x86_64.rpm) *Linux RPM*
[ilo5_146.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v169505/cp040736.exe) *Windows exe*
[ilo5_210.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v161193/RPMS/x86_64/firmware-ilo5-2.10-1.1.x86_64.rpm) *Linux RPM*
[ilo5_210.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v161192/cp038706.exe) *Windows exe*
[ilo5_214.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v177105/RPMS/x86_64/firmware-ilo5-2.14-1.1.x86_64.rpm) *Linux RPM*
[ilo5_214.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v177103/cp042927.exe) *Windows exe*
[ilo5_215.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v178124/RPMS/x86_64/firmware-ilo5-2.15-1.1.x86_64.rpm) *Linux RPM*
[ilo5_215.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v178118/cp043129.exe) *Windows exe*
[ilo5_216.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v179644/RPMS/x86_64/firmware-ilo5-2.16-1.1.x86_64.rpm) *Linux RPM*
[ilo5_216.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v179643/cp043490.exe) *Windows exe*
[ilo5_218.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v183738/RPMS/x86_64/firmware-ilo5-2.18-1.1.x86_64.rpm) *Linux RPM*
[ilo5_218.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v183739/cp044597.exe) *Windows exe*
[ilo5_230.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v167893/RPMS/x86_64/firmware-ilo5-2.30-1.1.x86_64.rpm) *Linux RPM*
[ilo5_230.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v167896/cp040154.exe) *Windows exe*
[ilo5_231.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v182696/RPMS/x86_64/firmware-ilo5-2.31-1.1.x86_64.rpm) *Linux RPM*
[ilo5_231.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v182701/cp044397.exe) *Windows exe*
[ilo5_233.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v188218/RPMS/x86_64/firmware-ilo5-2.33-1.1.x86_64.rpm) *Linux RPM*
[ilo5_233.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v188225/cp045967.exe) *Windows exe*
[ilo5_235.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v192284/RPMS/x86_64/firmware-ilo5-2.35-1.1.x86_64.rpm) *Linux RPM*
[ilo5_235.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v192285/cp046894.exe) *Windows exe*
[ilo5_241.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v193150/RPMS/x86_64/firmware-ilo5-2.41-1.1.x86_64.rpm) *Linux RPM*
[ilo5_241.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v193154/cp047027.exe) *Windows exe*
[ilo5_244.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v193437/RPMS/x86_64/firmware-ilo5-2.44-1.1.x86_64.rpm) *Linux RPM*
[ilo5_244.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v193439/cp047147.exe) *Windows exe*
[ilo5_246.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v195963/cp047873.exe) *Windows exe*
[ilo5_248.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v196411/RPMS/x86_64/firmware-ilo5-2.48-1.1.x86_64.rpm) *Linux RPM*
[ilo5_248.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v196412/cp047987.exe) *Windows exe*
[ilo5_255.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v190646/RPMS/x86_64/firmware-ilo5-2.55-1.1.x86_64.rpm) *Linux RPM*
[ilo5_255.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v190647/cp046463.exe) *Windows exe*
[ilo5_260.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v204064/RPMS/x86_64/firmware-ilo5-2.60-1.1.x86_64.rpm) *Linux RPM*
[ilo5_260.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v204066/cp049452.exe) *Windows exe*
[ilo5_260.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v208441/RPMS/x86_64/firmware-ilo5-2.60-1.1.x86_64.rpm) *Linux RPM*
[ilo5_260.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v208443/cp050571.exe) *Windows exe*
[ilo5_263.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v205679/RPMS/x86_64/firmware-ilo5-2.63-1.1.x86_64.rpm) *Linux RPM*
[ilo5_263.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v205681/cp049779.exe) *Windows exe*
[ilo5_265.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v205303/RPMS/x86_64/firmware-ilo5-2.65-1.1.x86_64.rpm) *Linux RPM*
[ilo5_265.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v205305/cp049685.exe) *Windows exe*
[ilo5_271.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v214929/RPMS/x86_64/firmware-ilo5-2.71-1.1.x86_64.rpm) *Linux RPM*
[ilo5_271.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v214931/cp052505.exe) *Windows exe*
[ilo5_272.bin](https://downloads.hpe.com/pub/softlib2/software1/fwpkg-ilo/p991377599/v203662/ilo5_272.fwpkg)
[ilo5_278.bin](https://downloads.hpe.com/pub/softlib2/software1/fwpkg-ilo/p991377599/v217404/ilo5_278.fwpkg)
[ilo5_281.bin](https://downloads.hpe.com/pub/softlib2/software1/fwpkg-ilo/p991377599/v225522/ilo5_281.fwpkg)
??? note "ILO6"
[ilo6_110.bin](https://downloads.hpe.com/pub/softlib2/software1/fwpkg-ilo/p788720876/v201141/ilo6_110.fwpkg)
[ilo6_120.bin](https://downloads.hpe.com/pub/softlib2/software1/fwpkg-ilo/p788720876/v217630/ilo6_120.fwpkg)
---
[Источник](https://pingtool.org/ru/latest-hp-ilo-firmwares/){ .md-button .md-button--primary }

@ -0,0 +1,46 @@
# Kyocera
## Обновление ПО
Извлечь файлы из архива, зайти в папку соответствующую модели принтера и скопировать на флешку в корень. Чтобы файлы были без папки
1. Включи питание и дождись пока на дисплее будет написано “Ready to print” («Готов к печати»), затем выключи устройство.
2. Вставь флешку с обновлением в USB-порт
3. Включи питание
4. В течении 40 секунд будет отображаться на экране надпись “FW-Update” и будет мигать индикатор «память»
5. Окончание прошивки будет выведено на экран сообщением complite и индикатор «память» перестанет мигать
6. Выдерни кабель из устройства и вытащи флешку
7. Готово
Для проверки версии используй вход в системное меню 10871087 и команду U000
Если обновление производится из-за того, что были проблемы, то после обновления, нужно сбросить на заводские параметры. Для этого:
1. Включить МФУ и дождаться окончания загрузку
2. Набрать 10871087, и мы попадаем в техническое меню
3. Набираем команду U021
4. Нажимаем большую зеленую кнопку «Старт»
5. Выбираем \[EXECUTE\] и нажимаем кнопку «Старт»
6. Выключаем питание
7. Включаем питание
8. Настройки сброшены
## Сбой обновления
В случаях возникновения сбоев в момент прошивки устройства можно провести процедуру по восстановлению микропрограммного обеспечения.
Данная процедура называется **Emergency update**. Вот краткая инструкция по ее проведению:
1. Загрузить обычную прошивку с сайта Kyocera Document Solutions
2. Распаковать и скопировать все файлы на флешку
3. Открыть скопированные файлы на флешке и:
4. переименовать файл DL\_CTRL.**\* в KM\_EMRG.**\* *(где .\*\*\* расширение файла)*
5. удалить файл ES\_SKIP.ON
6. Вставить флешку в аппарат, включить и ждать. Прошивка займет значительно больше времени, чем обычно.
## Файлы прошивок
[https://cloud.mail.ru/public/4pfw/P4JtQwhfa](https://cloud.mail.ru/public/4pfw/P4JtQwhfa)
## Страница в ВК с прошивками
[https://vk.com/topic-115150661\_35168109](https://vk.com/topic-115150661_35168109)

@ -0,0 +1,11 @@
# Установка Xpenology DSM 7.2
Ставить будем через ARC
https://github.com/AuxXxilium/arc
https://www.reddit.com/r/Xpenology/comments/xho4fg/upgrade_from_6x_to_7x_xpenology/
https://xpenology.com/forum/topic/62221-tutorial-installmigrate-to-dsm-7x-with-tinycore-redpill-tcrp-loader/
https://bafista.ru/kak-obnovit-xpenology-s-dsm-7-1-do-7-2/
Тут же применимо обновление версии Xpenology с 6 до 7.2
Обновление не сильно отличает от новой устанвоки

@ -0,0 +1,46 @@
# SSO вход на Synology через Authentik
Чуть от себя, чуть с [официальной документации](https://kb.synology.com/en-af/DSM/help/DSM/AdminCenter/file_directory_service_sso?version=7).
!!! warning
Применимо к DSM 7.1 и выше.
# Подготовка
Будут использоваться следующие заполнители:
- `synology.company`— это полное доменное имя сервера Synology DSM.
- `authentik.company`— это полное доменное имя установки authentik.
## Настройки на Authentik
В интерфейсе администратора Authentik, в разделе *«Поставщики»* создайте поставщика OAuth2/OpenID со следующими настройками:
- Название: Synology
- URI перенаправления: `https://synology.company/#/signin` (обратите внимание на отсутствие косой черты и включение порта веб-интерфейса)
- Ключ подписи: выберите любой доступный ключ.
- Режим темы: `Based on the Users's Email`
- Обратите внимание на `Client ID` и `Client secret`.
Далее. Создайте приложение, использующее этого провайдера. При необходимости примените ограничения доступа к приложению.
## Настройка Synology DSM
Чтобы настроить Synology DSM для использования Authentik в качестве поставщика OpenID Connect 1.0:
1. В панели управления DSM перейдите в раздел **Домен/LDAP** -> **Клиент SSO**.
2. Установите флажок **Выберите SSO по умолчанию на странице входа в систему**.
3. Установите флажок **Включить службу OpenID Connect SSO**.
4. Нажмите на кнопку **Настройки OpenID Connect SSO**.
5. Настройте следующие значения:
- Профиль: OIDC
- Тип учетной записи: Домен/LDAP/локальный
- Имя: Authentik
- Well-known url: скопируйте его из «URL-адреса конфигурации OpenID» в провайдере аутентификации (URL-адрес заканчивается на «/.well-known/openid-configuration»).
- Идентификатор приложения: «Идентификатор клиента» от поставщика аутентификации.
- Секрет приложения: «Секрет клиента» от провайдера аутентификации.
- Переадресация URI: `https://synology.company/#/signin` (он должен точно соответствовать «URI перенаправления» в authentik)
- Область действия авторизации: `openid profile email`
- Заявка на имя пользователя: `preferred_username`
- Сохраните настройки.

@ -0,0 +1,29 @@
# Обновление пакета корневых сертификатов CA
Я столкнулся с проблемой, что мой Synology NAS не может получить данные из локального реестра Docker:
```
docker: Error response from daemon: Get "https://redacted-local-hostname.net/v2/": x509: certificate has expired or is not yet valid
```
Оказывается, мой Synology не получает последние корневые сертификаты CA. Я обнаружил это, пытаясь скачать докер образ. Каждый раз выходила ошибка. Тогда я решил постучаться куда нить через **curl**.
```bash
curl -I https://st1t.ru
curl: (60) SSL certificate problem: certificate has expired
More details here: https://curl.haxx.se/docs/sslcerts.html
...
```
Исправить оказалось довольно легко. Нужно лишь скачать актуальные корневые сертифиаты. Приведенные ниже команды загружают сертификаты с сайта Curl.se в формате PEM. Перемещаем их туда, где Synology хранит связку CA-сертификатов, перезаписывая его. Мы сделаем резервную копию исходного пакета сертификатов CA с *.backup* расширением на тот случай, если по какой-либо причине вы захотите вернуться.
```bash
cp /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt.backup
wget --no-check-certificate https://curl.se/ca/cacert.pem
mv cacert.pem /etc/ssl/certs/ca-certificates.crt
```
После этого та же команда **curl** начала работать успешно. Однако Docker по-прежнему выдавал ту же ошибку — то есть не получал обновленные корневые сертификаты. Чтобы заставить работать, нужно перезапустить демон Synology Docker:
```bash
synoservice --restart pkgctl-Docker
```

@ -0,0 +1,27 @@
# ТСД - Терминалы Сбора Данных
1. [Решение проблем с ТСД Motorola](troubleshooting.md)
2. [Компонентный ремонт](repair.md)
## Motorola MC 9090
1. [Переустановка ОС CE 5.0](reinstall-os/ce5.md)
2. [Переустановка ОС WM 6.1](reinstall-os/m61.md)
## Motorola MC 9200
1. [Переустановка ОС](reinstall-os/ce7.md)
2. [Настройка ТСД](config-ce.md)
3. [Настройка Wi-Fi](config-wifi.md)
4. [Настройка TelnetCE](config-telnetce.md)
5. [Установка TelnetCE](install-telnetce.md)
## Софт
!!! note
7.0 версии не требуют лицензии
1. [Zebra MC9000](http://www.wavelink.com/Zebra-MC9000-Emulators-downloads/)
2. [Zebra MC9100](http://www.wavelink.com/Zebra-MC9100-Emulators-downloads/)

@ -0,0 +1,65 @@
# Windows CE 5.0
Требуется скачать файлы: из [шары](https://disk.yandex.ru/d/YiTDTxSRqo1ddQ) по пути: `\2.Заливка ТСД\9090CE5\`
![](../../../images/other/tsd/flashing-ce5_1.png)
Далее устанавливаем на ПК программу [USBDownload](https://cloud.thest1tch.ru/s/gpeP3WbwqbWnKjG). Запускаем программу **USBDownload**, откроется окно:
![](../../../images/other/tsd/flashing-ce5_2.png)
Подключите кредл к компьютеру с помощью USB-кабеля. Переходим к ТСД.
1. Вытаскиваем наполовину батарею
2. Зажимаем одновременно курок и кнопку питания (красная)
3. Вставляем батарею
4. Отпускаем кнопку питания, удерживая при этом курок
5. Вставляем в кредл не отпуская курок
6. После того как вставили отпускаем курок
Если на экране появилась меню, то вход в IPL произведён удачно:
![](../../../images/other/tsd/flashing-ce5_3.jpg)
Прошивка терминала производится в следующей последовательности (файлы лежат по пути : `\9090CE5\hex\`
=== "Для быстрой перезаливки"
1. Application (909Xc50BenAP032.hex)
2. Windows CE (909Xc50BenOS013000.hex)
=== "Для полной перезаливки"
1. Platform (909Xc50BenPL032.hex)
2. Partition table (909Xc50BenPT015.hex)
3. Application (909Xc50BenAP032.hex)
4. Windows CE (909Xc50BenOS013000.hex)
5. Monitor (909Xc50XenMO0152XX.hex)
На терминале выбираем строку с необходимым модулем (например **Application**), нажимаем энтер.
Выбираем USB нажимаем энтер.
![](../../../images/other/tsd/flashing-ce5_4.png)
Выбираем USB standart нажимаем энтер.
![](../../../images/other/tsd/flashing-ce5_5.png)
Выбираем Download нажимаем энтер.
![](../../../images/other/tsd/flashing-ce5_6.png)
На экране видим ожидание загрузки файла.
![](../../../images/other/tsd/flashing-ce5_7.png)
На компьютере заходим в программу USB Download. Видим, что статус девайса -сonnected. Выбираем файл прошивки (начинаем прошивку с 909Xc50BenAP032.hex), затем жмём кнопку Load.
![](../../../images/other/tsd/flashing-ce5_8.png)
Начался процесс заливки в программе
По окончании заливки появится сообщение об успешной установке. Для возврата на экран из пункта 3 нажимаем энтер.
Для заливки второго файла, повторяем последние действия
После заливки последнего файла, выбираем **System Reset** терминал перезагрузится и предложит откалибровать экран. После успешной калибровки экрана загрузится рабочий стол.

@ -1,14 +1,14 @@
# Переустановка ОС # Windows CE 7.0
Для того, чтобы перезалить проблемный ТСД, работающий на **Windows CE 7.0**, требуется скачать файлы: из [шары](https://disk.yandex.ru/d/YiTDTxSRqo1ddQ) по пути: `\2.Заливка ТСД\9200CE7\OSUpdate` требуется скачать файлы: из [шары](https://disk.yandex.ru/d/YiTDTxSRqo1ddQ) по пути: `\2.Заливка ТСД\9200CE7\OSUpdate`
![](../../images/other/tsd/flashing-tsd-mc9200-ce7_1.png) ![](../../../images/other/tsd/flashing-tsd-mc9200-ce7_1.png)
Папку **OSUpdate** скопировать на microSD карту, объемом не более 16 Гб и вставить в слот. Слот находится под клавиатурой. Как снять клавиатуру описано [здесь.](https://wiki.st1t.ru/ru/Hardware/TSD/Motorola/TSD-Motorola-repair-keyboard) Папку `OSUpdate` скопировать на microSD карту, объемом не более 16 Гб и вставить в слот. Слот находится под клавиатурой. Как снять клавиатуру описано [здесь](https://wiki.st1t.ru/ru/Hardware/TSD/Motorola/TSD-Motorola-repair-keyboard).
После этого, заходим в терминал, запускаем **File Explorer,** переходим на карту памяти в папку **OSUpdate** и запускаем файл `92N0c70Ben_SD`. Запустится процесс обновления файлов. После этого, заходим в терминал, запускаем **File Explorer,** переходим на карту памяти в папку **OSUpdate** и запускаем файл `92N0c70Ben_SD`. Запустится процесс обновления файлов.
![](../../images/other/tsd/flashing-tsd-mc9200-ce7_2.png) ![](../../../images/other/tsd/flashing-tsd-mc9200-ce7_2.png)
Вставляем ТСД в кредл или подключаем зарядку и ждем 3-7 минут. Столько занимает перезаливка. Вставляем ТСД в кредл или подключаем зарядку и ждем 3-7 минут. Столько занимает перезаливка.

@ -0,0 +1,21 @@
# Windows Mobile 6.1
Для того, чтобы перезалить проблемный ТСД, работающий на Windows Mobile 6.1, требуется скачать файлы: из [шары](https://cloud.st1t.ru/s/gpeP3WbwqbWnKjG) по пути: `2.Заливка ТСД/9090WM61/os`
![](../../../images/other/tsd/flashing-m61_1.png)
Эти файлы скопировать на SD карту, объемом не более 2 Гб и вставить в слот. Слот находится под клавиатурой(открутить 2 винта в углах клавиатуры)
После этого, заходим в терминал, запускаем `File Explorer` переходим на карту памяти и запускаем файл `StartUpdLdr`. Вставляем ТСД в кредл и ждем 5-15 минут. Столько занимает перезаливка.
После того, как ТСД перезалился, он попросит выполнить стартовую калибровку.
Далее нам требуется залить все необходимые программы на ТСД и выполнить настройку Wi-Fi. Для этого снова вставляем ТСД в кредл, устанавливаем на ПК набор программ для работы кредла (папка `Soft/Lync`) ждем пока ТСД определится.
ТСД в кредле и определился, те на него можно удаленно зайти для просмотра файлов. Копируем все файлы из папки `2.Заливка ТСД/9090WM61/2` в папку на ТСД **`Application`**, подтверждаем замену.
На ТСД открываем File Explorer идем в папку `Application`, запускаем файл `Fusion_2.57.0.0.025B_WM61.ARM`, ставим все по умолчанию. По окончанию работы ТСД перезагрузится. После перезагрузки, удаляем файл `Fusion_2.57.0.0.025B_WM61.ARM`, чтобы очистить место.
На ТСД открываем File Explorer идем в папку Application, запускаем файл `TelnetCE_70120.ARM`, выбираем установку в `/Application`
Запускаем из папки **`Application`** поочередно файлы `9190_NoCalibration+RadioOn.reg` и `NoSleepCE.reg`, соглашаемся со всем.

@ -0,0 +1,40 @@
# Ремонт ТСД
## Замена бекап-батареи или курка
Для замены бекап-батареи или курка, необходимо вынуть АКБ, открутить 2 болта за АКБ, открутить 2 болта возле сканера, снять кожух движением от себя. Сниматься будет тяжело, главное делать это аккуратно:
![](../../images/other/tsd/repair_01.png)
![](../../images/other/tsd/repair_02.png)
![](../../images/other/tsd/repair_03.png)
=== "Для бекап-батареи"
Откручиваем болты и меняем. Если не влезает, то оборачивает батарею поролоном и вставляем в рукоять кожуха.
![](../../images/other/tsd/repair_07.png)
=== "Для курка"
откручиваем болт и отколупываем курок. Отключаем на мать плате.
![](../../images/other/tsd/repair_04.png)
![](../../images/other/tsd/repair_05.png)
![](../../images/other/tsd/repair_06.png)
Новый вставляем в гнездо, продевая через отверстие кабель. Закручиваем болт. Подключаем на мат плате.
## Снятие клавиатуры
В 90% случаем если сбоит клавиатура, то помогает ее снятие и протирка контактов изопропиловым спиртом.
Если не помогло, то ее надо менять
Снятие клавиатуры в случае ее поломки, производится путем откручивания 2 болтов и снятием клавиатуры на себя:
![]../../images/other/tsd/repair_08.png)
Последовательность снятия клавиатуры

@ -0,0 +1,50 @@
# Решение проблем с ТСД Motorola
## Не загружаются ТСД Motorola MC9090, висят на стартовом экране:
Есть 2 способа по восстановлению работы:
1. Clean Boot and Blank(позволяет скинуть вашу OS к заводским настройкам)
2. Перешить терминал через SD-карту
### Clean Boot and Blank
Открыть заднюю крышку, и отключить разъем резервной батареи (во многих случаях зависание ТСД, связано с тем, что терминал отложили в сторонку и забили на него на пару месяцев, резервная просела, и основная тоже)
После делаем **Cold Boot.**
=== "Способ 1"
1. Отстегнуть и немного вынуть батарею (до фиксатора).
2. Нажать и держать курок (до конца всей процедуры).
3. Нажать и отпустить красную кнопку включения питания.
4. Защелкнуть батарею (вставить в терминал до упора, батарея должна зафиксироваться).
5. Отпустить курок. Если Cold Boot был сделан правильно, должен мигнуть индикатор над клавиатурой.
=== "Способ 2"
1. Для холодного рестарта достаточно вынуть наполовину батарейку (до фиксатора).
2. Зажать красную кнопку (вкл/выкл).
3. Вставить батарейку до упора. При этом не отпускать красную кнопку (может быть 20-30 секунд), пока не включится экран (вверху будет строка
4. **Clean Boot and Blank**
### Через карту SD
Если Cold Boot выполнен и ничего не помогло, выполните перепрошивку терминала с использованием SD-карточки. Современная SD-карта не подойдет, нужна старая карта, обычно объемом 2 и менее ГБ.
=== "Вход в режим IPL для WinCE"
Для входа в IPL нужен Кредл.
1. Вынуть наполовину батарейку (до фиксатора).
2. Зажать красную кнопку (вкл/выкл).
3. Вставить батарейку до упора. При этом не отпуская красную кнопку зажать и держать курок (желтую кнопку), пока не включится экран.
4. После включения экрана красную кнопку можно отпустить, желтую не отпуская вставить в кредл.
5. Ждем 2-3 морганий индикатора (знак того что устройство правильно вставлено и есть контакт), потом отпустить курок.
6. Режим IPL.
=== "Прошивка при WM"
Нужна карта памяти, с залитым Clean Boot And Blank. При помощи процедуры с красной кнопкой, зажатым курком и вставлянием батареи, запустить процесс сброса к заводским. Либо та-же операция только на флешке должна быть прошивка…
[Больше способов сброса для разных ТСД](https://www.mobilitysolutions.cz/eng/faq/mobile-computers/factory-resets){ .md-button .md-button--primary }

@ -0,0 +1,13 @@
# Обновление MC9090
## WM5 на WM6.1
Нам понадобится флешка объёмом 2 Гб и прошивка с WM 6, которую можно скачать вот по этой [ссылке](https://cloud.st1t.ru/s/gpeP3WbwqbWnKjG).
1. Распаковываем содержимое архива в корень флешки.
2. Помещаем флешку в ТСД (MC9090, если кто забыл).
3. Переходим на мобильном устройстве на флешку и запускаем там файл `StartUpdLdr_WM5.0.exe`, дожидаемся пока обновится **BootLoader**.
4. Как только обновление произошло и система вновь загрузилась запускаем `90XXw61X001Upgrade.exe`. Вставляем терминал в кредл и идём пить чай (кофе), т.к. процесс этот достаточно долгий.
После окончания прошивки должна загрузится обновлённая **Windows Mobile 6.1**.

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="640" height="640" viewBox="0 0 640 640" xml:space="preserve">
<desc>Created with Fabric.js 5.3.0</desc>
<defs>
</defs>
<g transform="matrix(0.9544918218 0 0 0.9544918218 320 325.5657767239)" id="0UAuLmXgnot4bJxVEVJCQ" >
<linearGradient id="SVGID_136_0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1 0 0 1 -236.6470440833 -213.9441386034)" x1="259.78" y1="261.15" x2="463.85" y2="456.49">
<stop offset="0%" style="stop-color:#74C2FF;stop-opacity: 1"/>
<stop offset="100%" style="stop-color:rgb(134,230,169);stop-opacity: 1"/>
</linearGradient>
<path style="stroke: rgb(242,242,242); stroke-opacity: 0.51; stroke-width: 190; stroke-dasharray: none; stroke-linecap: butt; stroke-dashoffset: 0; stroke-linejoin: miter; stroke-miterlimit: 4; fill: url(#SVGID_136_0); fill-rule: nonzero; opacity: 1;" transform=" translate(0, 0)" d="M 131.8665 -139.04883 C 159.01022 -111.20969000000001 170.12421 -99.45396000000001 203.11849999999998 -51.72057000000001 C 236.1128 -3.9871800000000093 264.44147999999996 83.98416999999998 187.33995 144.05073 C 177.72728999999998 151.53955 166.73827 158.81189999999998 154.65932999999998 165.65812999999997 C 69.85514999999998 213.72433999999998 -68.67309000000003 240.78578 -161.79279 174.28328999999997 C -268.17583 98.30862999999997 -260.10282 -68.66557000000003 -144.35093 -170.50579000000005 C -28.599040000000002 -272.34602000000007 104.72278 -166.88797000000005 131.86649999999997 -139.04883000000004 z" stroke-linecap="round" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 637 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save