Compare commits

...

302 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 e68cbd5f58 add tg to index.md
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/pr Build is passing Details
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
thest1tch 3f95b3644d Merge branch 'main' into states/01
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 445690a8b8 Изменил(а) на '.drone.yml'
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 8e9a899e48 Изменил(а) на 'mkdocs.yml'
continuous-integration/drone/push Build is failing Details
2 years ago
thest1tch 00aaac4c60 fix drone
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/pr Build is passing Details
2 years ago
thest1tch 512ef15277 Изменил(а) на '.drone.yml'
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 8773af4cd6 12
continuous-integration/drone/pr Build is failing Details
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 5a37b3d9d9 fix mkdocs.yml
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/promote/production Build is failing Details
continuous-integration/drone/pr Build is failing Details
2 years ago
thest1tch e3400d47b8 123
continuous-integration/drone/pr Build is failing Details
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch d7ce36a60c 1
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/pr Build is failing Details
2 years ago
thest1tch 8785694425 add phone
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 5d23ec7e95 fix
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 4b194c627e add phone grandstream
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 5baa365223 fix
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 928034b849 a
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 4f59aedd26 fix
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 66aa83f9f9 fix
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch f408c641e1 add backup
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 7dac345a5d fix note
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch ed81ab5152 fix
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 9d2232e069 sdf
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 1f5285af50 add Valheim 2 years ago
thest1tch 1d3639d345 update
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 3b4acb7b49 fux
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 038d7f59f9 1
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch d480ddc9f7 1
continuous-integration/drone/push Build is failing Details
2 years ago
thest1tch 57879cc9c3 1
continuous-integration/drone/push Build was killed Details
2 years ago
thest1tch 6db93e6821 1
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 6d3a648bac update 25/06
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 16302c0348 as
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 2fe9fffd7f fix
continuous-integration/drone/push Build is failing Details
2 years ago
thest1tch c33575595d fix
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 7fd5d420b0 миграция с wp
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 94b3364f40 fix
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch b7d6bc1156 fix
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 016ffa5926 fix
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 7eab43ba54 fix
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch e452037f66 add tsd, part 1/5
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 4d52f98de5 fix
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 414e111112 update index.md
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch bb2601b5c0 add new + fix
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 311aad9a98 fix
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 6d34e2a2c3 update + add new
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch e63f21c585 add new
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 890a393407 fix
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 1d5c0f39a9 fix blogs
continuous-integration/drone/push Build is failing Details
2 years ago
thest1tch 40b1793c83 fix blogging
continuous-integration/drone/push Build is failing Details
2 years ago
thest1tch 800edab870 update blogs
continuous-integration/drone/push Build is failing Details
2 years ago
thest1tch 770e7a45bd update plextraktsync
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 87da234b3a add plextraktsync
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 388c1742a7 update plex-mm
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 4a6570b8f2 asd
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 9a4f6f06a6 as
continuous-integration/drone/push Build is failing Details
2 years ago
thest1tch 6a4d289277 fix
continuous-integration/drone/push Build is failing Details
2 years ago
thest1tch b45afeff90 fix
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 0caf0b8158 fix
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch c6d1b51a8a add new
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 623902a5dd Изменил(а) на 'mkdocs.yml'
continuous-integration/drone/push Build is passing Details
2 years ago
thest1tch 1d65e68835 Merge pull request 'новые статьи' (#2) from feature into main
continuous-integration/drone/push Build is failing Details
Reviewed-on: #2
2 years ago

@ -4,53 +4,44 @@ type: docker
name: build-home-docs name: build-home-docs
steps: steps:
- name: build-docs - name: build main
image: squidfunk/mkdocs-material:9.1.15 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
- chmod -R 777 /site - chmod -R 777 /site
when: when:
event: push event:
branch: main - push
branch:
- 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 - name: site-st1tru
host:
path: /opt/appdata/nginx/st1t.ru
- name: site-dev
host: host:
path: /opt/appdata/mkdocswiki 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

@ -0,0 +1 @@
# Блог

@ -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,69 +0,0 @@
[Self-hosted файл/медиа хостинг.](https://github.com/ZizzyDizzyMC/linx-server/)
## Демо
Как выглядит, можно посмотреть на: [https://put.icu/](https://put.icu/)
### Клиенты
| | | |
| --- | --- | --- |
| Официальный | 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`
2. Создайте файл конфигурации (пример предоставлен в репозитории), мы будем называть его **linx-server.conf** в следующих примерах.
Пример:
```
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-compose
```yaml
version: "3.7"
# linx - self-hosting picture and data
linx:
container_name: linx-server
image: andreimarcu/linx-server
command: -config /data/linx-server.conf
volumes:
- $DOCKER_APP/linx/files:/data/files
- $DOCKER_APP/linx/meta:/data/meta
- $DOCKER_APP/linx/linx-server.conf:/data/linx-server.conf
networks:
- direct_net
environment:
PUID: $PUID
PGID: $PGID
ports:
- "8090:8080"
restart: unless-stopped
```
В идеале вы должны использовать обратный прокси-сервер, такой как nginx, traefik или caddy, для обработки сертификатов TLS.
## Автор
Andrei Marcu, [https://andreim.net/](https://andreim.net/)

@ -1,140 +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:
```

@ -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
```

@ -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,38 @@
Собрал несколько настроек для docker-compose, чтобы проверять работоспособность различных баз данных
## MySQL / MariaDB
```yaml
healthcheck:
test: out=$$(mysqladmin ping -h 127.0.0.1 -P 3306 -u root --password=$$(cat $${MARIADB_ROOT_PASSWORD_FILE}) 2>&1); echo $$out | grep 'mysqld is alive' || { echo $$out; exit 1; }
interval: 1m
timeout: 10s
retries: 5
```
## Redis
```yaml
healthcheck:
test: [ 'CMD', 'redis-cli', 'ping' ]
interval: 5m
timeout: 10s
retries: 5
```
## PostgreSQL
pg_isready не очень полезно, потому что часто служба может работать, но БД недоступна.
```yaml
healthcheck:
test: [ "CMD", "psql", "-U", "postgres", "-c", "SELECT 1;" ]
interval: 1m
timeout: 10s
retries: 5
```
## Curl
Ensure you use --fail or your health check will always succeed.
```yaml
healthcheck:
test: [ "CMD", "curl", "--fail", "http://localhost" ]
interval: "60s"
timeout: "5s"
retries: 3
```

@ -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,196 @@
# Запуск своего сервера игры Valheim
![Valheim](https://raw.githubusercontent.com/lloesche/valheim-server-docker/main/misc/Logo_valheim.png)
!!! note
Для запуска используем docker образ от [lloesche](https://github.com/lloesche). Полная информация по запуску, доступна на [Github](https://github.com/lloesche/valheim-server-docker).
Запуск сервера будем производить на Ubuntu, по ссылке выше на Github, можно найти инструкцию, как запустить на других системах.
Запустить сервер можно 2 путями: через **консоль** (базовое) или через **docker-compose**
## Требования к серверу
Без игроков сервер потребляет в среднем 3Гб RAM и 30% одного ядра CPU на процессоре Intel Xeon E5-2620 v3 (частота 2,4ГГц)
При подключении игроков, нагрузка на CPU возрастает на 15% за хаждого игрока.
| | Минимальные | Рекомендуемые |
|----------|----------|-------|
| CPU | 2 Core | 4 Core, 2.8+Ghz |
| RAM | 4 Gb | 8 Gb |
Большая тактовая частота ЦПУ лучше, чем большее количество ядер.
## Запуск через docker-compose
Я рекомендую именно этот способ
Скопируйте и вставьте следующее в консоль
```
mkdir -p $HOME/valheim-server/config $HOME/valheim-server/data
cd $HOME/valheim-server/
cat > $HOME/valheim-server/.env << EOF
SERVER_NAME=My Server
WORLD_NAME=Dedicated
SERVER_PASS=secret
SERVER_PUBLIC=true
PUID=1000
PGID=1000
UPDATE_IF_IDLE=true
UPDATE_CRON="30 5 * * *"
BEPINEX=true
EOF
```
Далее создадим сам docker-compose файл:
```
nano docker-compose.yml
```
и заполним его
```yaml
version: '3.7'
services:
valheim:
image: ghcr.io/lloesche/valheim-server:latest
container_name: valheim-server
cap_add:
- sys_nice
volumes:
- $HOME/valheim-server/config:/config
- $HOME/valheim-server/data:/opt/valheim
ports:
- "2456-2458:2456-2458/udp"
- "9001:9001/tcp"
env_file:
- $HOME/valheim-server/valheim.env
restart: always
stop_grace_period: 2m
```
Запуск через
```
docker-compose up
```
## Базовое использование (консоль)
Имя образа Docker — `ghcr.io/lloesche/valheim-server`.
Каталог монтирования конфигурации сервера `/config` в контейнере Docker.
Если у вас есть существующий мир в системе Windows, вы можете скопировать его, например:
`C:\Users\Lukas\AppData\LocalLow\IronGate\Valheim\worlds_local` в
`$HOME/valheim-server/config/worlds_local` , и запустить образ с `$HOME/valheim-server/config`томом, смонтированным `/config` внутри контейнера.
Каталог контейнера `/opt/valheim` содержит загруженный сервер. При желании его можно смонтировать в томе, чтобы не загружать сервер при каждом новом запуске.
```
$ mkdir -p $HOME/valheim-server/config/worlds_local $HOME/valheim-server/data
# copy existing world
$ docker run -d \
--name valheim-server \
--cap-add=sys_nice \
--stop-timeout 120 \
-p 2456-2457:2456-2457/udp \
-v $HOME/valheim-server/config:/config \
-v $HOME/valheim-server/data:/opt/valheim \
-e SERVER_NAME="My Server" \
-e WORLD_NAME="Neotopia" \
-e SERVER_PASS="secret" \
ghcr.io/lloesche/valheim-server
```
!!! warning
`SERVER_PASS` должен быть не менее 5 символов. Иначе `valheim_server.x86_64` откажется запускаться!
Новый запуск займет несколько минут в зависимости от скорости вашего интернет-соединения, поскольку контейнер загрузит выделенный сервер Valheim из Steam (~ 1 ГБ).
Не забудьте изменить `WORLD_NAME`, чтобы отразить название вашего мира! Для существующих миров это имя файла в `worlds_local/` папке без `.db/.fwl` расширения.
!!! note
Если вы хотите играть с друзьями через Интернет и находитесь за NAT, убедитесь, что порты UDP 2456-2457 перенаправлены на хост-контейнер.
**Кроссплей:** чтобы включить кроссплей между разными платформами, добавьте `-crossplay` в `SERVER_ARGS`:
```
-e SERVER_ARGS="-crossplay"
```
Более подробная информация находится в разделе [Как найти свой сервер](https://github.com/lloesche/valheim-server-docker#finding-your-server) .
Информацию об игре только по локальной сети см. в разделе [Избранные сервера Steam и LAN](https://github.com/lloesche/valheim-server-docker#steam-server-favorites--lan-play).
Предоставление `CAP_SYS_NICE` контейнеру не является обязательным. Это позволяет библиотеке Steam, которую использует Valheim, увеличить количество циклов процессора. Без него вы увидите сообщение `Warning: failed to set thread priority` в журнале запуска.
### Значения переменных
Я не буду описывать значения всех переменных, используемых к образе. Я опишу лишь те. что использовал на своем сервере. По [ссылке](https://github.com/lloesche/valheim-server-docker#environment-variables) можно найти другие.
!!! note
Все имена и значения переменных чувствительны к регистру!
| Name | Default | Purpose |
|----------|----------|-------|
| `SERVER_NAME` | `My Server` | Имя сервера, отображаемое в браузере серверов |
| `WORLD_NAME` | `Dedicated` | Имя мира без `.db/.fwl` |
| `SERVER_PASS` | `secret` | Пароль для входа на сервер, минимум **5 символов!** |
| `SERVER_PUBLIC` | `true` | Отображение сервера в браузере серверов (`true`) или нет (`false`) |
| `UPDATE_CRON` | `*/15 * * * *` | [Cron расписание](https://en.wikipedia.org/wiki/Cron#Overview) для проверки обновлений (отключено, если задана пустая строка или установлен `UPDATE_INTERVAL`) |
| `UPDATE_IF_IDLE` | `true` | Запуск проверки обновлений, когда на сервере пусто (`true` или `false`) |
| `BEPINEX` | `false` | Должен быть загружен мод [BepInExPack Valheim](https://valheim.thunderstore.io/package/denikson/BepInExPack_Valheim/) (конфиг в `/config/bepinex`, плагины в `/config/bepinex/plugins`). Не использовать вместе с `VALHEIM_PLUS`. |
| `PUID` | `0` | UID для запуска valheim-сервера как |
| `PGID` | `0` | GID для запуска valheim-сервера как |
### Развертывание
Создайте файл конфигурации `/etc/sysconfig/valheim-server`
```
SERVER_NAME=My Server
SERVER_PORT=2456
WORLD_NAME=Dedicated
SERVER_PASS=secret
SERVER_PUBLIC=true
```
Затем включите контейнер Docker при загрузке системы.
```
$ sudo mkdir -p /etc/valheim /opt/valheim
$ sudo curl -o /etc/systemd/system/valheim.service https://raw.githubusercontent.com/lloesche/valheim-server-docker/main/valheim.service
$ sudo systemctl daemon-reload
$ sudo systemctl enable valheim.service
$ sudo systemctl start valheim.service
```
## Обновления
По умолчанию контейнер будет проверять наличие обновлений сервера Valheim каждые 15 минут, если в данный момент к серверу не подключены игроки. Если обновление найдено, оно загружается, и сервер перезапускается. Это расписание обновлений можно изменить с помощью `UPDATE_CRON` переменной.
В перменных выше, указана чистота проверки обновлений "30 5 * * *" - это означает, что сервер будет првоерять обновления раз в сутки, в 5:30. Чтобы было проще указывать параметры cron, я советую использовать [crontab.guru](https://crontab.guru/)
## Бекап сервера, когда наигрались.
Какой бы не была эта игра прекрасной, приходит время закончить играть в нее. Я не хочу в рамках этого руководства рассказывать в чем ее проблема для долгой игры. Вы можете и сами почитать отрицательные отзывы в Steam. Скажу лишь, что у меня и 2 моих друзей сгорели жепы в последней добавленной локации Mistland. Но, мы не бросем эту игру и вернемся в нее еще.
Для того чтобы сохранить ваш сервер или перенести куда либо еще, нужно забекапить папку `$HOME/valheim-server/config`:
```
cd $HOME/valheim-server
sudo tar -czvf valheim-server.tar.gz config
```
проверить созданный архив можно командой
```
tar -ztvf valheim-server.tar.gz
```
---
## Полезности
- [Генератор карты](https://valheim-map.world/)
- Моды для сервера или клиента:
- [Nexusmods](https://www.nexusmods.com/valheim/mods/)
- [Thunderstore](https://valheim.thunderstore.io/package/)
---
[Github](https://github.com/lloesche/valheim-server-docker){ .md-button .md-button--primary }

@ -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 обязательно укажите имя пользователя и пароль для учетной записи администратора.
Готово.

@ -0,0 +1,232 @@
# Grafana
Для запуска будет использовать Docker Compose. Я предпологаю, что уже есть настроенное окружение с Docker Compose, если нет, то сделать можно в [инструкции](../install.md).
Grafana — один из самых популярных инструментов мониторинга. В сочетании с Prometheus, Grafana предлагает мощный инструмент визуализации данных временных рядов.
Чтобы запустить Prometheus и Grafana с помощью docker compose, нам нужно создать файл docker compose, определяющий отдельные сервисы (Prometheus и Grafana), используемые образы, запущенные порты и все остальное необходимое.
Использование постоянных томов с Docker Compose
Нам нужно учитывать тот факт, что для Grafana требуется файл конфигурации и файл источника данных. Promemetheus также требует файла конфигурации. Для этого мы будем использовать смонтированные тома (постоянные тома), чтобы можно было легко вносить изменения в файлы, когда это необходимо.
Создайте рабочий каталог с именем prometheus-grafana и внутри него создайте каталоги для хранения файлов конфигурации Prometheus и Grafana.
mkdir -p ~/prometheus-grafana/{grafana,prometheus}
Теперь перейдите в каталог grafana и создайте файлы конфигурации. Файл конфигурации Grafana по умолчанию предоставляется в официальном репозитории Github. Создайте файл с именем grafana.ini, скопируйте и вставьте конфигурацию grafana по умолчанию в этот файл и сохраните.
Контент для конфигурации 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
После этого перейдите в папку Prometheus и создайте файл конфигурации prometheus, чтобы указать Prometheus, где брать метрики. Поскольку у меня нет отдельного сервера для мониторинга, отображаемые метрики относятся к самому серверу prometheus (localhost:9090)
```bash
nano ~/prometheus-grafana/prometheus/prometheus.yml
```
```yaml
global:
scrape_interval: 15s
scrape_timeout: 10s
evaluation_interval: 15s
alerting:
alertmanagers:
static_configs:
targets: []
scheme: http
timeout: 10s
api_version: v1
scrape_configs:
job_name: prometheus
honor_timestamps: true
scrape_interval: 15s
scrape_timeout: 10s
metrics_path: /metrics
scheme: http
static_configs:
targets:
localhost:9090
```
Вы можете открыть и изменить файл в соответствии с вашим вариантом использования.
nano ~/prometheus-grafana/prometheus/prometheus.yml
На данный момент Grafana не показывает, откуда брать данные. Нам нужно сказать ему, чтобы он достался от Прометея. Создайте файл с именем datasource.yml в каталоге grafana.
nano ~/prometheus-grafana/grafana/datasource.yml
apiVersion: 1
datasources:
name: Prometheus
type: prometheus
url: http://localhost:9090
isDefault: true
access: proxy
editable: true
Дальнейшая модификация может быть выполнена:
nano ~/prometheus-grafana/grafana/datasource.yml
К настоящему времени у нас готовы все тома. Давайте продолжим, чтобы создать файл docker-compose.
nano ~/prometheus-grafana/docker-compose.yml
Содержимое должно выглядеть так, как показано ниже. Убедитесь, что вы изменили путь к файлам конфигурации в соответствии с путями в вашей системе.
version: "3.7"
networks:
direct_net:
name: direct_net
driver: bridge
ipam:
config:
subnet: 192.168.200.0/24
services:
prometheus:
user: "$PUID:$PGID"
container_name: prometheus
image: prom/prometheus:latest
restart: always
networks:
direct_net
ulimits:
nofile:
soft: 200000
hard: 200000
command:
--config.file=/data/prometheus.yml
--storage.tsdb.path=/data
--storage.tsdb.retention.time=180d
--web.enable-admin-api
volumes:
$DOCKER_APP/prometheus:/data
/etc/timezone:/etc/timezone:ro
/etc/localtime:/etc/localtime:ro
grafana:
user: "$PUID:$PGID"
container_name: grafana
image: grafana/grafana:latest
restart: always
networks:
direct_net
security_opt:
no-new-privileges:true
environment:
GF_INSTALL_PLUGINS: "grafana-clock-panel,grafana-simple-json-datasource,grafana-worldmap-panel,grafana-piechart-panel"
volumes:
~/prometheus-grafana/grafana/data:/var/lib/grafana
/etc/timezone:/etc/timezone:ro
/etc/localtime:/etc/localtime:ro
Если вам нужно указать конкретную версию Prometheus или Grafana, вы можете добавить номер версии, чтобы он выглядел так:
services:
prometheus:
image: prom/prometheus:#get tag https://hub.docker.com/r/prom/prometheus/tags
grafana:
image: grafana/grafana:# Tags https://hub.docker.com/r/grafana/grafana/tags
Также целью создания стека Prometheus/Grafana является мониторинг других сервисов, работающих, возможно, на разных серверах. Prometheus использует разные экспортеры для предоставления метрик, связанных с аппаратным обеспечением и ядром, в зависимости от отслеживаемого вами сервиса, наиболее распространенным из которых является node-exporter. Экспортеры устанавливаются на хостах, за которыми нужно следить.
Поскольку у меня нет другого внешнего сервера, я собираюсь установить экспортер узлов на локальном компьютере. Для этого в конец файла ~/prometheus-grafana/docker-compose.yml добавляем:
node-exporter:
image: prom/node-exporter:latest
container_name: monitoring_node_exporter
restart: unless-stopped
expose:
9100
Также я должен обновить файл prometheus.yml, чтобы добавить node-exporter в качестве цели.
static_configs:
targets: ['localhost:9090','node-exporter:9100']
Или формат:
static_configs:
targets:
localhost:9090
node-exporter:9100
Если у вас есть другие экспортеры из других сервисов, вы можете добавить в массив по подобию.
Запуск контейнеров с помощью docker-compose
Перейдите в каталог данных:
cd ~/prometheus-grafana
Теперь все готово для запуска наших контейнеров. Чтобы запустить контейнеры, выполните команду, как показано ниже:
docker compose up -d
Проверте запуск контейнеров:
docker compose ps
Получите доступ к Prometheus и grafana из браузера, используя порты по умолчанию. Для Прометея мы используем http://serverip_or_hostname:9090. Если вы перейдете к status -> target , вы сможете увидеть статус своих целей, как показано ниже :
Для Grafana зайдите http://serverip_or_hostname:3000и войдите в систему, используя имя пользователя и пароль, указанные в .ini файле конфигурации. Учетные данные по умолчанию: admin:admin
Теперь вы можете продолжить и создать информационную панель для мониторинга. Одна вещь, которую я отметил, заключается в том, что я не мог получить метрики для использования при создании графиков, когда «доступ» в разделе «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/).
## Шаг 6. Установим таймзону
`sudo timedatectl set-timezone America/New\_York` Установим таймзону, чтобы в будущем было удобнее использовать. По умолчанию, установлена таймзона 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** для начала:

@ -0,0 +1,54 @@
# 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/)
Таких сервисов много, это лиш один из них. Позводяет захостить у себя сервис по хранению и выдаче различных медия. Аля imgur.
## Запуск
1. Создать папки `files` и `meta` и запустить `chown -R 65534:65534 meta && chown -R 65534:65534 files`
2. Создайте файл конфигурации (пример предоставлен в репозитории), мы будем называть его **linx-server.conf** в следующих примерах.
=== "Docker"
```bash
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"
```yaml title="docker-compose.yaml"
version: "3.9"
service:
# linx - self-hosting picture and data
linx:
container_name: linx-server
image: andreimarcu/linx-server
command: -config /data/linx-server.conf
volumes:
- ./linx/files:/data/files
- ./linx/meta:/data/meta
- ./linx/linx-server.conf:/data/linx-server.conf
environment:
PUID: 1000
PGID: 1000
ports:
- "8080:8080"
restart: unless-stopped
```
## Возможности
- Отображение базовых типов файлов (картинки, видео, аудио, markdown, pdf)
- Отображение подсветки кода во строенном редакторе
- 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
```

@ -0,0 +1,30 @@
# Exception during scan .. is locked
Столкнулся с такой проблемой, в логах nextcloud стала всплывать ошибка
`Error: opendir(/mnt/downloads/): Failed to open directory: Permission denied at /var/www/html/lib/private/Files/Storage/Local.php#153`
Поиск решения проблемы, привело к запуску команды на сканирование файлов пользователей. Для Docker запускается командой:
```bash
docker exec -ti -u 33 nextcloud php -f /var/www/html/console.php files:scan --all
```
В ходе сканирования файлов пользователей, всплыла новая ошибка:
`Exception while scanning: "files/0e3e13890e7b79a0edc572f53b262079" is locked #0 /volume1/web/nextcloud/lib/private/Files/Storage/Common.php(680)`
Согласно [базе знаний Nextcloud](https://help.nextcloud.com/t/file-is-locked-how-to-unlock/1883), для её решения, нужно:
=== "Вручную отключить состояние блокировки"
- Переведите Nextcloud в режим обслуживания: отредактируйте `config/config.php`и измените эту строку:
`'maintenance' => true,`
- Пустая таблица `oc_file_locks`: используйте такие инструменты, как phpmyadmin, или подключитесь напрямую к своей базе данных и запустите (префикс таблицы по умолчанию — `oc_`, этот префикс может быть другим или даже пустым):
`DELETE FROM oc_file_locks WHERE 1`
- Отключите режим обслуживания (отменить первый шаг).
- Убедитесь, что ваши cron-jobs работают правильно (страница администратора сообщает вам, когда cron запускался в последний раз): [Docs Nextcloud](https://docs.nextcloud.org/server/13/admin_manual/configuration_server/background_jobs_configuration.html)
=== "Постоянное решение"
- На вашем **собственном сервере** : используйте Redis для этой функции. Это быстрее, и до сих пор никаких проблем не было зарегистрировано. Вы можете следовать [инструкциям по кэшированию памяти в документах](https://docs.nextcloud.org/server/13/admin_manual/configuration_server/caching_configuration.html#id4)
- **Общий хостинг** (Те, кто не может установить Redis): вы можете отключить блокировку файлов, отредактировав файл конфигурации `config/config.php`:
`'filelocking.enabled' => false,` однако отключение не является хорошим решением. Вы можете столкнуться с проблемами, когда несколько процессов пытаются записать в файл (особенно онлайн-редакторы в веб-интерфейсе). В однопользовательских и одноклиентских средах это, вероятно, не такая уж проблема.
- У меня поднят [redis](../redis.md) для кеширования с веб-мордой redis-commander, поэтому идем в веб-интерфейс и делаем flushall.
- После запускаем сканирование файлов. Проблема решена. Файлы доступны. Ошибок в логе нет.

@ -0,0 +1,46 @@
# Nextcloud - свое облако для файлов
Запуск через docker-compose. Для начала создадим файл `.env` со следующим содержанием:
```env title=".env"
PUID=
PGID=
TZ=
NEXTCLOUD_DOMAIN_NAME=
REDIS_PASSWORD=
```
Далее создаем файл `docker-compose.yml`
```yaml title="docker-compose.yml"
version: "3.7"
services:
# Nextcloud Docker Application
nextcloud:
image: nextcloud:28
container_name: nextcloud
restart: always
volumes:
- ./nextcloud:/var/www/html
- ./nextcloud/apps:/var/www/html/custom_apps
- ./nextcloud/config:/var/www/html/config
- ./nextcloud/data:/var/www/html/data
environment:
- POSTGRES_HOST=192.168.1.12
- POSTGRES_DB_FILE=/run/secrets/nextcloud_postgres_db
- POSTGRES_USER_FILE=/run/secrets/nextcloud_postgres_user
- POSTGRES_PASSWORD_FILE=/run/secrets/nextcloud_postgres_password
- NEXTCLOUD_ADMIN_PASSWORD_FILE=/run/secrets/nextcloud_admin_password
- NEXTCLOUD_ADMIN_USER_FILE=/run/secrets/nextcloud_admin_user
#- REDIS_HOST=
#- REDIS_HOST_PASSWORD=
- PUID=$PUID
- PGID=$PGID
- TZ=$TZ
- NEXTCLOUD_TRUSTED_DOMAIN=$NEXTCLOUD_DOMAIN_NAME
- TRUSTED_PROXIES=172.18.0.253
- OVERWRITEPROTOCOL=https
labels:
- 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)

@ -0,0 +1,16 @@
# Module php-imagick in this instance has no SVG support
При использовании официального Nextcloud образа Docker вы увидите сообщение вроде:
![](../../images/docker/nextcloud-docker-php-imagick.png)
Чтобы исправить это предупреждение в docker нужно установить пакет `libmagickcore-6.q16-6-extra`:
```bash
docker exec nextcloud apt -y update
docker exec nextcloud apt -y install libmagickcore-6.q16-6-extra
```
После этого предупреждение пропало.
Если мы создадим контейнер заново, это изменение будет потеряно. На мой взгляд, здесь лучше выбрать простое решение и делать это каждый раз при обновлении образа, в отличие от постоянной, но гораздо более трудоемкой процедуры. Такой, как обновление docker-контейнера и возврата к официальному образу.

@ -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)
- Полный контроль над вашими данными. Удаление изображений с индивидуальными и глобальными кодами удаления

@ -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)

@ -0,0 +1,69 @@
[![](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.
## Функции
- Медиа из Plex добавлено в коллекцию Trakt
- Сихронизация рейтингов
- Сихронизация статуса просмотра (даты не синхронизируются от Trakt до Plex)
- Списки понравившегося в Trakt загружаются, все фильмы в Plex, принадлежащие к этому списку, объединяются в коллекцию
- Сихронизация списков налюдения
- Можно отредактировать файл конфигурации, чтобы выбрать, что синхронизировать
Ни одно из вышеперечисленных действий не требует членства в Plex Pass или Trakt VIP. Недостаток: необходимо выполнять вручную или через cronjob, нельзя использовать оперативные данные через веб-хуки.
## Установка через docker-compose
```yaml
services:
plextraktsync:
image: ghcr.io/taxel/plextraktsync
container_name: plextraktsync
restart: on-failure:2
volumes:
- ./config:/app/config
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Yekaterinburg
command: sync
```
Запустить синхронизацию: `docker compose run --rm plextraktsync sync`
Для запуска автоматически по расписанию можно использовать crontab или sheduler:
=== "Crontab"
```
$ crontab -e
0 */2 * * * $HOME/.local/bin/plextraktsync sync
```
=== "Sheduler"
```yaml
version: '2'
services:
scheduler:
image: mcuadros/ofelia:latest
container_name: scheduler
depends_on:
- plextraktsync
command: daemon --docker
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
labels:
ofelia.job-run.plextraktsync.schedule: "@every 6h"
ofelia.job-run.plextraktsync.container: "plextraktsync"
```
## Настройки
Если будет ошибка, что не найден сервер Plex, то надо в ручную прописать сервер в файле `servers.yml`:
```yaml
servers:
default:
token: token
urls:
- http://plex:32400
```

@ -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)

@ -0,0 +1,452 @@
# Защита хоста Docker
Первая категория охватывает все, что вы можете сделать для защиты вашего хоста докеров.
## 1. Поддерживайте актуальность Docker Host
Здесь действительно не нужно никаких объяснений. Это самая простая из лучших практик безопасности Docker, и она буквально занимает секунды.
Держите свою хост-систему Docker в курсе обновлений безопасности. В моем стеке Docker Traefik на базе Linux я часто обновляю пакеты и обновляю систему, используя следующие команды:
```bash
sudo apt-get update
sudo apt-get upgrade
```
## 2. Используйте обратный прокси
Лучший способ — не открывать какие-либо порты для Интернета, а вместо этого использовать VPN в вашей частной сети и получать локальный доступ к приложениям. Но это слишком громоздко, и размещение приложений за обратным прокси-сервером — удобная, но худшая альтернатива.
Вам нужно будет настроить переадресацию портов на вашем интернет-шлюзе, чтобы перенаправить определенные порты на хост Docker.
Я настоятельно рекомендую не выставлять все приложения Docker в Интернет. Вместо этого поместите их за обратным прокси. Я использую Traefik и выставляю в Интернет только порты **80** и **443**. Даже приборная панель traefik, использующая порт **8080**, находится за обратным прокси-сервером.
# Защита Докера
Следующая большая категория: Docker. Давайте рассмотрим, как я считаю, контрольный список безопасности Docker , чтобы убедиться, что ваша установка защищена.
## 3. Не меняйте владельца сокета Docker
Не связывайтесь с владением Docker Socket (`/var/run/docker.sock` в Linux). По умолчанию сокет принадлежит пользователю **root** и группе **docker** .
Для удобства я рекомендовал добавить себя (ваше имя пользователя) в группу докеров в прошлом.
Преимущество заключается в том, что вы можете запускать команды docker без использования sudo. Но это угроза безопасности. Я отошел от него и не рекомендую.
## 4. Не запускайте контейнеры Docker от имени root
По умолчанию контейнеры запускаются от имени пользователя root внутри контейнера, что дает привилегии root. Это угроза безопасности.
Одна из лучших практик безопасности Docker — запускать контейнер от имени пользователя без полномочий root (UID не 0). Известные и надежные образы используют эту передовую практику безопасности при создании образов. Например, LinuxServer.io предоставляет образы докеров для нескольких приложений домашнего сервера. Их образы позволяют явно указать UID и GID в качестве переменных окружения.
В идеале, это должно выглядеть так, как показано в блоке кода ниже.
```yaml
environment:
- PUID=$PUID
- PGID=$PGID
```
## 5. Осторожно используйте привилегированный режим
По умолчанию контейнеры Docker работают в «непривилегированном» режиме. Это означает, что эти контейнеры не могут запускать демон Docker внутри себя. Это также запрещает использование хост-устройств или определенных функций ядра.
Обычно это делается путем добавления следующей строки в services:
```yaml
privileged: true
```
Для некоторых служб требуется привилегированный режим. Например, только четыре службы в моем файле компоновки Docker используют привилегированный режим:
1. Home Assistant — для доступа к USB-контроллеру Z-wave.
2. Socket Proxy — требование для Socket proxy, повышающее безопасность.
3. Glances для мониторинга системы
4. APCUPSD — для связи демона ИБП APC с ИБП через USB.
В таких ситуациях используйте образы докеров только из надежных источников (подробнее об этом позже). Еще лучший подход — использовать возможности докеров .
Кроме того, добавление следующей строки гарантирует, что контейнеры не получат дополнительных привилегий:
```yaml
security_opt:
- no-new-privileges:true
```
## 6. Используйте доверенные образы Docker
По возможности всегда используйте изображения от проверенных издателей или официальных источников.
Это дает немедленное доверие и обеспечивает безопасность контейнера Docker.
С непопулярными образами трудно предсказать или предположить, были ли соблюдены/реализованы передовые методы безопасности Docker.
!!! note
К сожалению, для многих приложений для домашних серверов, таких как Sonarr, Radarr и т. д., нет «официальных» или «проверенных» издателей. Поэтому вам придется ориентироваться на популярность изображения (количество загрузок/звезд).
## 7. Используйте секреты Docker
Указание всей вашей конфиденциальной информации (например, ключей API) в файле `.env`, `/etc/environment` или файле `docker-compose.yml` может представлять угрозу безопасности.
Именно поэтому были введены [секреты Docker](https://www.docker.com/blog/docker-secrets-management/): для управления конфиденциальными данными.
Реализация секретов Docker для вашего стека — это многоэтапный процесс.
### А. Создать папку секретов
Сначала создайте папку secrets внутри корневой папки docker .
```bash
sudo mkdir secrets
```
Установите для этой папки права доступа 600 , принадлежащие пользователю root и группе root .
```bash
sudo chown root:root ~/docker/secrets
sudo chmod 600 ~/docker/secrets
```
Это делает эту папку доступной только для пользователя *root*, добавляя уровень безопасности при доступе к конфиденциальной информации.
### B. Создайте секретные файлы
Затем вам нужно будет поместить вашу конфиденциальную информацию в файл. В качестве примера давайте определим секрет для электронной почты учетной записи Cloudflare.
Давайте создадим файл внутри папки секретов с именем **cloudflare_email** . Помните, что для создания файла вам потребуются root-права. В моей системе Ubuntu я использую:
```bash
sudo su
nano cloudflare_email
```
Вы можете использовать любой другой текстовый редактор.
Единственное, что нужно добавить в файл, — это адрес электронной почты вашей учетной записи Cloudflare.
Сохранить и выйти.
### C. Определите секреты в файле Docker Compose
Теперь, когда секрет Docker создан, давайте определим его в файле компоновки Docker. Делается это с помощью блока: secrets.
В приведенном ниже примере показаны два секрета: `cloudflare_email` и `cloudflare_api_key`.
```yaml
########################### SECRETS
secrets:
cloudflare_email:
file: $SECRETSDIR/cloudflare_email
cloudflare_api_key:
file: $SECRETSDIR/cloudflare_api_key
```
`$SECRETSDIR` — это переменная окружения, содержащая путь к папке секретов Docker.
### D. Используйте секреты в службах Docker
После глобального определения мы можем использовать секреты в сниппетах docker-compose для отдельных сервисов. Поскольку мы добавили данные учетной записи Cloudflare в качестве секретов Docker, давайте посмотрим, как их использовать во фрагменте кода docker-compose для Traefik.
Во-первых, мы должны сделать секреты доступными внутри контейнера Traefik. Для этого вам нужно добавить следующий блок в сниппет docker-compose для Traefik:
```yaml
secrets:
- cloudflare_email
- cloudflare_api_key
```
Это делает секретный файл доступным в папке `/run/secrets` внутри контейнера.
Затем мы можем установить переменные среды для чтения конфиденциальных данных из этих секретных файлов с помощью блока `environment:` как показано ниже:
```yaml
environment:
- CF_API_EMAIL_FILE=/run/secrets/cloudflare_email
- CF_API_KEY_FILE=/run/secrets/cloudflare_api_key
```
Обратите внимание, что к переменным окружения теперь добавляется **_FILE** в конце. Не пропустите это, иначе это не сработает.
Сохраните и заново создайте службу и проверьте журналы на наличие ошибок. Если контейнер не сможет правильно прочитать секреты, вы увидите это как ошибку в журналах.
!!! note
Чтобы секреты Docker работали правильно, базовый образ контейнера должен их поддерживать. Если образ имеет репутацию/надежный образ, очень высока вероятность того, что разработчики внедрили передовые методы обеспечения безопасности Docker , включая секреты Docker.
## 8. Используйте прокси-сервер Docker Socket
Каждый раз, когда вы предоставляете сокет Docker службе, вы упрощаете для контейнера получение root-доступа в хост-системе.
Но некоторым приложениям требуется доступ к сокету Docker и API (например, Traefik, Glances, Dozzle, Watchtower и т. д.).
Если Traefik будет скомпрометирован, ваша хост-система может быть скомпрометирована. Собственная документация Traefik перечисляет использование Socket Proxy в качестве решения.
Прокси-сервер сокета похож на брандмауэр для сокета/API докера. Вы можете разрешить или запретить доступ к определенному API.
Я начал с [Socket Proxy от Tecnativa](https://hub.docker.com/r/tecnativa/docker-socket-proxy), но недавно перешел на [Socket Proxy от FluenceLab](https://hub.docker.com/r/fluencelabs/docker-socket-proxy), так как он обеспечивает более детальный контроль .
Добавьте сеть в свой файл compose (игнорируйте первую строку, если у вас уже есть блок network:):
```yaml
networks:
socket_proxy:
name: socket_proxy
driver: bridge
ipam:
config:
- subnet: 192.168.91.0/24
```
И, наконец, вот фрагмент кода docker-compose для добавления прокси-сервера сокета для повышения безопасности докера:
```yaml
# Docker Socket Proxy - Security Enchanced Proxy for Docker Socket
socket-proxy:
container_name: socket-proxy
image: tecnativa/docker-socket-proxy
restart: always
networks:
socket_proxy:
ipv4_address: 192.168.91.254 # You can specify a static IP
# privileged: true # true for VM. False for unprivileged LXC container.
ports:
- "127.0.0.1:2375:2375" # Port 2375 should only ever get exposed to the internal network. When possible use this line.
# I use the next line instead, as I want portainer to manage multiple docker endpoints within my home network.
# - "2375:2375"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
environment:
- LOG_LEVEL=info # 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
# Not always needed
- BUILD=0
- COMMIT=0
- CONFIGS=0
- CONTAINERS=1 # Traefik, portainer, etc.
- DISTRIBUTION=0
- EXEC=0
- IMAGES=1 # Portainer
- INFO=1 # Portainer
- NETWORKS=1 # Portainer
- NODES=0
- PLUGINS=0
- SERVICES=1 # Portainer
- SESSION=0
- SWARM=0
- SYSTEM=0
- TASKS=1 # Portainer
- VOLUMES=1 # Portainer
```
!!! warning "Внимание"
Никогда не открывайте порт 2375 для доступа в Интернет. Вас взломают. Это еще более важно для виртуальных частных серверов, которые обычно предоставляют доступ ко всем портам. Включите брандмауэр, чтобы разрешить только порты 80 и 443 (и заблокировать остальные) для прохождения на ваш сервер, а также реализовать обходной путь Docker IP Tables, описанный далее в этом руководстве.
!!! note
Кроме того, порт `2375` должен быть открыт только для внутренней сети (*127.0.0.1:2375*).
В блоке **environment:** указываем раздел Docker API, который хотим открыть или закрыть. Я добавил комментарии, чтобы описать, какие службы требуют каких разделов API. Например, если вы не используете WatchTower, вы можете ввести **0** для нескольких разделов API.
После запуска контейнера прокси-сервера Socket вы можете заменить прямой доступ к сокету Docker прокси-сервером Socket для всех служб, которые в нем нуждаются. Это можно сделать несколькими способами, в зависимости от того, как это поддерживает образ контейнера.
Для Traefik замените следующий аргумент CLI (если вы используете аргументы CLI вместо статических конфигураций):
`- --providers.docker.endpoint=unix:///var/run/docker.sock`
на
`- --providers.docker.endpoint=tcp://socket-proxy:2375`
Для других служб вы можете удалить указание Docker Socket в качестве тома (следующая строка под томами: ):
`- /var/run/docker.sock:/var/run/docker.sock:ro`
и добавьте переменную окружения DOCKER_HOST , как показано ниже:
`DOCKER_HOST: tcp://socket-proxy:2375`
Это то, что я делаю для Portainer и WatchTower.
Воссоздайте свой стек, и ваши службы должны использовать защищенный прокси-сервер сокета Docker вместо сокета Docker.
## 9. Измените DOCKER_OPTS на Respect IP Table Firewall
Случайно наткнулся на эту тему. Я включил UFW, как всегда делаю на своем VPS Digital Ocean, и заблокировал все, кроме 80 и 443. Я непреднамеренно попытался получить доступ к одной из служб, используя номер порта, и был шокирован тем, что я был подключен.
Покопавшись дальше, я наткнулся на этот открытый вопрос на GitHub . Почему это было открыто больше года, несмотря на огромное количество людей, запрашивающих исправление, мне не понятно.
Поэтому, если у вас включен прокси-сервер сокета и включен брандмауэр, из-за недостатка безопасности в докере хакеры все равно могут взломать вашу систему, используя порт прокси-сервера сокета (2375).
К счастью, есть обходной путь. В системах на базе Ubuntu/Debian отредактируйте **/etc/default/docker** и добавьте следующую строку:
`DOCKER_OPTS="--iptables=false"`
Сохраните файл и перезапустите службу Docker.
Попробуйте подтвердить исправление, обратившись к одной из ваших служб с помощью WAN-IP:PORT.
## 10. Контролируйте использование ресурсов Docker
Мне понравилось, что я могу устанавливать ресурсы для сервисов Docker. К сожалению, это возможно только с [Docker-Compose версии 2](https://docs.docker.com/compose/compose-file/compose-file-v2/#cpu-and-other-resources) или режимом Docker Swarm.
Если вы используете любой из них, вы можете установить [ограничения ресурсов для служб Docker](https://docs.docker.com/config/containers/resource_constraints/) .
Вот пример docker-compose для установки ограничений ресурсов в режиме Docker Swarm:
```yaml
deploy:
resources:
limits:
cpus: '0.50'
memory: 50M
reservations:
cpus: '0.25'
memory: 20M
```
Установив ограничения ресурсов, вы можете ограничить любую службу, которая становится мошеннической и потребляет ваши системные ресурсы.
**Защита приложений Docker с помощью Traefik**
Есть вещи, которые можно сделать на стороне Traefik, чтобы защитить ваш стек от вредоносных атак. Давайте рассмотрим некоторые меры безопасности Traefik, которые можно реализовать.
## 11. Ограничение скорости
Ограничение скорости довольно распространено для смягчения атак методом грубой силы или отказа в обслуживании. В моем стеке Traefik Docker есть промежуточное ПО для определения ограничения скорости .
```yaml
middlewares-rate-limit:
rateLimit:
average: 100
burst: 50
```
Приведенный выше общий набор чисел отлично работает для меня. Его можно настроить в соответствии с вашей ситуацией, используя документацию Traefik по ограничению скорости .
## 12. Заголовки безопасности Traefik
Заголовки безопасности — это основные требования к безопасности веб-сайта. Они защищают от различных атак, включая XSS, кликджекинг, внедрение кода и многое другое.
Вот заголовки безопасности Traefik, которые я определил как промежуточное ПО:
```yaml
middlewares-secure-headers:
headers:
accessControlAllowMethods:
- GET
- OPTIONS
- PUT
accessControlMaxAge: 100
hostsProxyHeaders:
- "X-Forwarded-Host"
sslRedirect: true
stsSeconds: 63072000
stsIncludeSubdomains: true
stsPreload: true
forceSTSHeader: true
# frameDeny: true #overwritten by customFrameOptionsValue
customFrameOptionsValue: "allow-from https:example.com" #CSP takes care of this but may be needed for organizr.
contentTypeNosniff: true
browserXssFilter: true
# sslForceHost: true # add sslHost to all of the services
# sslHost: "example.com"
referrerPolicy: "same-origin"
# Setting contentSecurityPolicy is more secure but it can break things. Proper auth will reduce the risk.
# the below line also breaks some apps due to 'none' - sonarr, radarr, etc.
# contentSecurityPolicy: "frame-ancestors '*.example.com:*';object-src 'none';script-src 'none';"
featurePolicy: "camera 'none'; geolocation 'none'; microphone 'none'; payment 'none'; usb 'none'; vr 'none';"
customResponseHeaders:
X-Robots-Tag: "none,noarchive,nosnippet,notranslate,noimageindex,"
server: ""
```
В Traefik была ошибка, из-за которой нельзя было определить заголовки безопасности как в динамической, так и в статической конфигурации. Это с тех пор было закрыто.
Так что теперь можно добавить **sslForceHost** и **sslHost** к отдельным службам, если хотите, для дополнительной безопасности.
## 13. Параметры TLS
Параметры TLS позволяют настраивать соединения TLS для защиты соединения между клиентом и вашей службой. Дополнительные пояснения можно найти в [документации TLS от Traefik](https://doc.traefik.io/traefik/https/tls/).
В моей настройке я определил следующие параметры TLS для Traefik:
```yaml
tls:
options:
default:
minVersion: VersionTLS12
sniStrict: true
cipherSuites:
- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305
- TLS_AES_128_GCM_SHA256
- TLS_AES_256_GCM_SHA384
- TLS_CHACHA20_POLY1305_SHA256
curvePreferences:
- CurveP521
- CurveP384
```
## 14. Многофакторная аутентификация
Это становится все более и более очевидным / обязательным. Если вы еще не защитили свои приложения Docker с помощью многофакторной аутентификации, сделайте это прямо сейчас. Я тестировал и использовал три системы аутентификации: Google OAuth, Authelia и Keycloak.
## 15. Защитите контейнеры Docker с помощью Cloudflare
Вот краткое изложение ключевых настроек Cloudflare для повышения безопасности контейнеров Docker при подключении к Интернету.
- **Cloudflare Proxy** — позволяет использовать улучшения безопасности и производительности Cloudflare.
- **Режим SSL** — полный или строгий. Это шифрует соединение между исходным сервером и Cloudflare и между Cloudflare и клиентом.
- **Пограничные сертификаты**:
- **Всегда использовать HTTPS**: ВКЛ.
- **HTTP Strict Transport Security (HSTS)**: Включить (будьте осторожны)
- **Минимальная версия TLS**: 1.2
- **Оппортунистическое шифрование**: ВКЛ.
- **TLS 1.3**: ВКЛ.
- **Автоматическая перезапись HTTPS**: ВКЛ.
- **Мониторинг прозрачности сертификата**: ВКЛ.
- Правила брандмауэра. Создайте правила для разрешения или запрета определенного трафика (например, я разрешаю трафик только из РФ в мои частные приложения, так как я получаю к нему доступ только из РФ).
- **Настройки брандмауэра**:
- **Уровень безопасности**: Высокий
- **Режим боя с ботом**: ВКЛ.
- **Прохождение испытания**: 30 минут
- **Проверка целостности браузера**: ВКЛ.
Это настройки Cloudflare, связанные с безопасностью Docker.
**Другие улучшения безопасности для стека Docker Traefik**
Все вышеперечисленные рекомендации по безопасности докеров — это то, что я реализовал до сих пор. Но есть и другие, и я настоятельно рекомендую изучить следующее для дополнительной безопасности.
## 16. Fail2ban
Fail2ban сканирует ваши лог-файлы и блокирует IP-адреса, которые показывают злонамеренные намерения (например, поиск эксплойтов, неудачных паролей и т. д.). При обнаружении подозрительной активности он обновляет правила брандмауэра, чтобы заблокировать IP-адрес на указанный период времени.
## 17. Безопасность Docker Bench
Docker Bench for Security — это скрипт, который проверяет десятки распространенных передовых методов развертывания контейнеров Docker в рабочей среде .
## 18. RBAC
RBAC — это управление доступом на основе ролей. Если вы представляете предприятие или имеете несколько пользователей, это обязательно. Это может быть довольно дорого реализовать, но [portainer делает это очень простым](https://www.funkypenguin.co.nz/note/docker-rbac-with-portainer/) (поскольку кулинарная книга FunkyPenguin потрясающая … проверьте ее, если вы этого не сделали) за символическую плату.
## 19. Сканер уязвимостей контейнеров
Последним в списке лучших практик для безопасности докеров является сканер уязвимостей. Здесь есть несколько примеров, но я перечислю только один: Clair.
Clair — проект с открытым исходным кодом для статического анализа уязвимостей в контейнерах приложений.
Он использует Clair API для индексации образов контейнеров, а затем сопоставляет их с известными уязвимостями безопасности Docker.

@ -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/).

@ -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

@ -0,0 +1,390 @@
# Traefik
**Traefik** — это обратный прокси-сервер с открытым исходным кодом, обеспечивающий простую работу с микросервисами и/или просто контейнерами с вашими приложениями.
!!! tip
Обратный прокси-сервер (reverse proxy, реверс-прокси) служит для ретрансляции запросов из внешней сети к каким-либо серверам/сервисам внутренней сети (например веб-сервера, БД или файловые хранилища) и позволяет:
- обеспечить сокрытие структуры внутренней сети и подробностей о находящейся в ней сервисах
- осуществлять балансировку нагрузки (load balancing) между экземплярами одного и того же сервиса или серверами с одинаковыми задачами
- обеспечить зашифрованное (HTTPS) соединение между клиентом и любым сервисом, в таком случае SSL сессия создается между клиентом и прокси, а между прокси и сервисом во внутренней сети устанавливается незашифрованное HTTP соединение, если сервис поддерживает HTTPS то можно организовать зашифрованное соединение и во внутренней сети
- организовать контроль доступа к сервисам (аутентификацию клиента), а также установить файрвол (брандмауэр).
В статье будет описываться использование Traefik в Docker в качестве реверс-прокси для других контейнеров Docker, а также не контейнеризированных сервисов.
## Введение
**Traefik** позиционируется разработчиками как "Edge Router", то есть можно направить его непосредственно в глобальную сеть одной стороной и во внутреннюю другой. Если у читателя создалось впечатление что таким образом создается единая точка отказа всей системы, то так и есть, но есть несколько моментов:
- во-первых, **Traefik** имеет развитый функционал для автоматического восстановления при сбоях
- во-вторых, существует **Traefik EE** — платная версия, в которой помимо прочих преимуществ имеется HA (Hight Availability, Высокая доступность), что подразумевает распределение нагрузки между несколькими экземплярами сервиса (узлами), таким образом при отказе одного его задачи перераспределяются на другие узлы, а отказавший узел отключается и затем немедленно вводится обратно в эксплуатацию.
> В качестве примечания отметим, что в статье будет рассматриваться бесплатная версия Traefik.
Одним из основных достоинств Traefik является возможность изменения его конфигурации без приостановки работы (“на лету”) при применении любого из поддерживаемых бэкэндов, называемых провайдерами.
Список основных провайдеров:
- Docker
- File
- Kubernetes
- Consul Catalog
- Marathon
- Rancher
В рамках этой статьи будут рассмотрены первый и второй провайдеры из этого списка.
Вероятно, не знакомому с темой читателю будет не понятно, чем является провайдер с именем — *File*, это некоторый файл (или папка с файлами), в котором описана конфигурация какого-либо сервиса, не связанного с другими провайдерами, но который должен быть скрыт за реверс-прокси. Остальные же провайдеры являются различными системами оркестрации контейнеров.
Файл конфигурации **Traefik**, а также файлы для провайдера *File* могут быть написаны на TOML либо YAML, в статье будут приведены примеры на YAML так как этот синтаксис больше нравится автору, а какой-либо функциональной разницы между ними нет, а также не составляет трудности переписать файлы на другой формат конфигурации. Traefik будет развернут в Docker. Для развертывания будет использоваться `docker-compose`, для обеспечения простоты повторного развертывания.
> В статье будут приведены команды для ОС Ubuntu.
## Деплой Traefik
Предполагается, что у читателя установлены и настроены `docker` и `docker-compose`. Установить можно [тут](../install.md)
Создадим в домашней папке пользователя папку `traefik`, в которой будем хранить всю конфигурацию, и перейдем в эту папку
```bash
mkdir ~/traefik
cd ~/traefik
```
Для развертывания (деплоя) Traefik создадим файл `docker-compose.yml` и отредактируем его в любом удобном вам редакторе. Для начала этот файл будет иметь следующий вид:
```yaml
version: '3.9'
services:
traefik:
image: traefik:v2.10 # Лучше не использовать тег latest
container_name: traefik
restart: unless-stopped
security_opt:
- no-new-privileges:true
ports:
- 80:80
- 443:443
volumes:
- /etc/localtime:/etc/localtime:ro # for localtime
- /var/run/docker.sock:/var/run/docker.sock:ro # Docker Socket
- ./data/traefik.yml:/traefik.yml:ro # static config
```
Во внешний мир будут смотреть порты 80 и 443 для HTTP и HTTPS соответственно. Также пробросим в контейнер сокет демона Docker для работы механизма автоматической конфигурации. Конфигурацию Traefik будем описывать в файле `traefik.yml` находящемся в папке `data` в текущей директории.
> Если для разделения внешней и внутренней сетей используются networks Docker-а, то Traefik должен иметь доступ к внешней сети и ко всем внутренним в которых находятся целевые сервисы.
Создадим и будем постепенно наполнять этот файл.
Для начала опишем точки входа в наш прокси (те самые порты, которые смотрят во внешний мир):
```yaml
entryPoints:
http:
address: ":80"
https:
address: ":443"
```
Здесь `http` и `https` это просто названия (могут быть любыми, хоть `a` и `b`) и были выбраны так для удобства.
Теперь добавим первого провайдера — Docker, это делается следующим образом:
```yaml
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false
```
Параметром `exposedByDefault` указываем, что Traefik не должен брать все контейнеры подряд, далее будет объяснено каким образом мы будем сообщать какие контейнеры нас интересуют. Также здесь видно зачем мы пробрасывали сокет в контейнер — именно через него Traefik будет получать сведения о запускаемых контейнерах на этом хосте (можно подключиться и к демону на другом хосте).
Следующим шагом развернем весь HTTP трафик в HTTPS (почему это было сделано именно таким образом будет описано дальше):
```yaml
http:
routers:
http-catchall:
rule: HostRegexp(`{host:.+}`)
entrypoints:
- http
middlewares:
- redirect-to-https
middlewares:
redirect-to-https:
redirectScheme:
scheme: https
permanent: false
```
Traefik может проксировать не только HTTP трафик, но и просто TCP и UDP, поэтому указываем что этот блок конфигурации относится к `http`.
Здесь мы встречаем два из трех основных элементов роутинга в Traefik 2 routers (роутеры) и middlewares(промежуточные обработчики), рассмотрим их подробнее.
### Routers (роутеры)
Рассмотрим на примере описанного выше роутера:
- `http-catchall` — имя роутера, может быть любым, но обязано быть уникальным в рамках блока `http` всей конфигурации **Traefik**
- `rule` — правило, описывает какой трафик попадает в этот роутер, в данном случае описывается `HostRegexp`, то есть поле `Host` запроса должно попадать под регулярное выражение `.+` (то есть любое). Синтаксис имеет вид `{name:reg_exp}`
- `entrypoints` — массив описанных ранее точек входа, которые будут использоваться этим роутером, в нашем случае используем только `http`
- `middlewares` — массив промежуточных обработчиков, куда попадает трафик перед передачей к сервису (сервисы будут рассмотрены позднее)
Подробнее о различных видах правил можно прочитать в [документации](https://docs.traefik.io/routing/routers/#rule).
### Middlewares(промежуточные обработчики)
- `redirect-to-https` — имя обработчика, может быть любым, но обязано быть уникальным в рамках блока `http` всей конфигурации Traefik;
- `redirectScheme` — тип обработчика, в данном случае изменение схемы запроса;
- `scheme: https` — вынуждает клиента использовать схему HTTPS при запросе к прокси;
- `permanent: false` — говорит клиенту что это не навсегда и может измениться в будущем.
Подробнее о различных обработчиках можно прочитать в [документации](https://docs.traefik.io/middlewares/overview/) (дальше в статье будет описан ещё один обработчик — BasicAuth).
## Файл конфиурации
??? note "Полностью файл traefik.yml"
```yaml
entryPoints:
http:
address: ":80"
https:
address: ":443"
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false
http:
routers:
http-catchall:
rule: HostRegexp(`{host:.+}`)
entrypoints:
- http
middlewares:
- redirect-to-https
middlewares:
redirect-to-https:
redirectScheme:
scheme: https
permanent: false
```
Таким образом мы получим первую рабочую конфигурацию. Выполняем:
```bash
sudo docker-compose up -d
```
И прокси должен подняться, можно почитать логи (`sudo docker-compose logs -f`) и убедиться, что всё работает.
## Lets Encrypt
Поскольку мы хотим использовать HTTPS, нам нужно где-то взять SSL сертификаты для сервисов. У нас есть возможность использовать свои сертификаты, но мы настроем автоматическое получение бесплатных сертификатов от **Lets Encrypt**.
Добавим в конфигурацию (`traefik.yml`) новый блок:
```yaml
certificatesResolvers:
letsEncrypt:
acme:
email: postmaster@example.com
storage: acme.json
caServer: "https://acme-staging-v02.api.letsencrypt.org/directory"
httpChallenge:
entryPoint: http
```
Здесь:
- `letsEncrypt` — это просто имя резолвера
- `acme` — тип резолвера (других типов в общем-то и нет)
- `storage` — файл, в котором хранятся сведения о полученных сертификатах
- `httpChallenge` — тип acme-челенжа, дополнительно указываем параметр — точку входа
- `caServer: "https://acme-staging-v02.api.letsencrypt.org/directory"` — позволяет использовать не основной сервер Lets Encrypt в тестовых целях, так как основной имеет строгие лимиты API (можно закомментировать, когда наладите получение сертификатов).
Также дополним пункт `volumes` в файле `docker-compose.yml`, чтобы сохранять сертификаты при перезапуске контейнера (предварительно создав файл `data/acme.json`):
```yaml hl_lines="5"
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./data/traefik.yml:/traefik.yml:ro
- ./data/acme.json:/acme.json
```
## Docker провайдер
HTTPS настроен, пришло время поднять первый сервис, пусть это будет дашборд самого Traefik, так как Traefik у нас в Docker, воспользуемся этим провайдером.
Для описания конфигурации в Docker Traefik использует метки (labels) контейнеров. Допишем в наш файл `docker-compose.yml`:
```yaml
labels:
- "traefik.enable=true"
- "traefik.http.routers.traefik.entrypoints=https"
- "traefik.http.routers.traefik.rule=Host(`traefik.example.com`)"
- "traefik.http.routers.traefik.tls=true"
- "traefik.http.routers.traefik.tls.certresolver=letsEncrypt"
- "traefik.http.routers.traefik.service=api@internal"
- "traefik.http.services.traefik-traefik.loadbalancer.server.port=888"
```
Разберем построчно:
- `traefik.enable=true` — указываем что Traefik должен обеспечить
доступ к этому контейнеру, необходимо для всего остального
- `traefik.http.routers.traefik.entrypoints=https` — создаем новый
роутер с точной входа `https`
- `traefik.http.routers.traefik.rule=Host(`traefik.example.com`)` —
роутер будет жить по адресу traefik.example.com
- `traefik.http.routers.traefik.tls=true` — указываем что используется
TLS
- `traefik.http.routers.traefik.tls.certresolver=letsEncrypt`
указываем через какой резолвер получать сертификат
- `traefik.http.routers.traefik.service=api@internal` — указываем, что
сервер за этим роутером — `api@internal`, это специальный сервис,
созданный по умолчанию, это как раз и есть дашбоард который мы хотели
увидеть
- `traefik.http.services.traefik-traefik.loadbalancer.server.port=888`
— издержки интерфейса, без этого не заработает, но можно написать
абсолютно любую цифру.
Дашбоард надо включить, для этого добавим в файл `traefik.yml`:
```yaml
api:
dashboard: true
```
На данном этапе можно пересоздать контейнер (нужно так как мы меняли `docker-compose.yml`):
```bash
sudo docker-compose down && sudo docker-compose up -d
```
Когда всё поднимется можно перейти на `traefik.example.com` (тут на самом деле должен быть ваш домен, который направлен на хост с Traefik) и увидеть дашборд.
Дашбоард это хорошо, но мы не хотим, чтобы все пользователи интернета имели к нему доступ, закроем его от внешнего мира с помощью BasicAuth, для это в Traefik есть специальный *middleware*.
Для начала сгенерируем для нас строку с логином и паролем (admin/password):
```bash
$ htpasswd -nb admin password
admin:$apr1$vDSqkf.v$GTJOtsd9CBiAFFnHTI2Ds1
```
Теперь добавим в наш `docker-compose.yml` новые строчки:
```yaml
- "traefik.http.middlewares.traefik-auth.basicauth.users=admin:$$apr1$$vDSqkf.v$$GTJOtsd9CBiAFFnHTI2Ds1"
- "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
??? note "Весь docker-compose.yml"
```yaml
version: '3.9'
services:
traefik:
image: traefik:v2.10
container_name: traefik
restart: unless-stopped
security_opt:
- no-new-privileges:true
ports:
- 80:80
- 443:443
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./data/traefik.yml:/traefik.yml:ro
- ./data/acme.json:/acme.json
labels:
- "traefik.enable=true"
- "traefik.http.routers.traefik.entrypoints=https"
- "traefik.http.routers.traefik.rule=Host(`traefik.example.com`)"
- "traefik.http.routers.traefik.tls=true"
- "traefik.http.routers.traefik.tls.certresolver=letsEncrypt"
- "traefik.http.routers.traefik.service=api@internal"
- "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"
```
Теперь при попытке доступа к дашборду у нас спросят логин и пароль.
Приведем также кофигурацию некого другого сервиса, развернутого через docker-compose (аналогично работает и для обычного docker):
```yaml
labels:
- "traefik.enable=true"
- "traefik.http.routers.test.entrypoints=https"
- "traefik.http.routers.test.rule=Host(`test.example.com`)"
- "traefik.http.routers.test.tls=true"
- "traefik.http.routers.test.tls.certresolver=letsEncrypt"
- "traefik.http.services.test-service.loadbalancer.server.port=80"
```
Здесь одна новая метка `traefik.http.services.test-service.loadbalancer.server.port=80` — присваиваем этому контенеру имя сервиса `test-service` и порт 80, он автоматически присоединится к роутеру `test`, Traefik автоматически постороит маршрут до этого контенера, даже если он находится на другом хосте.
## File провайдер
С контейнерами работает, а как быть если есть какой-то сервис работающий на выделенном хосте (пускай IP 192.168.1.222 и порт 8080) и мы его хотим пропустить через этот же прокси, заодно закрыв его с помощью HTTPS. Для этого есть решение.
Добавим в `docker-compose.yml` ещё один `volume`:
```yaml hl_lines="5"
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./data/traefik.yml:/traefik.yml:ro
- ./data/custom/:/custom/:ro
- ./data/acme.json:/acme.json
```
Пускай описания таких хостов у нас будут лежать в `data/custom/` (а что, вдруг ещё появятся).
Добавим в `traefik.yml` конфигурацию file провайдера для этих файлов:
```yaml
providers:
file:
directory: /custom
watch: true
```
Директория следует из нашего `docker-compose.yml`, а `watch: true` значит что Traefik будет автоматически обновлять конфигурацию при обнаружении изменений в этих файлах (помните про обновление конфигурации “на лету”, вот работает даже для файлов, а не только для оркестраторов).
Перезапускаем Traefik и теперь можно создать файл с описанием нашего отдельного хоста (`data/custom/host.yml`):
```yaml
http:
routers:
host:
entryPoints:
- https
service: service-host
rule: Host(`host.example.com`)
tls:
certResolver: letsEncrypt
services:
service-host:
loadBalancer:
servers:
- url: http://192.168.1.222:8080/
passHostHeader: true
```
Роутер описывался раньше, тут добавилось только `service: service-host` — связь с нашим сервисом, и конфигурация для TLS.
Описание для сервиса имеет вид:
```yaml
имя_сервиса:
loadBalancer:
servers:
- хосты для балансировки нагрузки
#- ...
```
Дополнительно мы указываем параметр `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
```

@ -0,0 +1,26 @@
# Настройка и использование консольных команд Админа в ARK: Survival Evolved
Как использовать администраторские команды консоли в **ARK: Survival Evolved**? Для этого потребуется открыть консоль, нажав кнопку **TAB**.
Некоторые из этих команд будут недоступны, пока вы не выполнили аутентификацию с помощью команды `enablecheats`.
Команды, отмеченные тегом `_cheat_` должны указываться с префиксом `admincheat`.
## Использование
### Первый способ
1. Выключаем сервер.
2. В конфиге сервера `GameUserSettings.ini` указываем пароль администратора переменной `ServerAdminPassword`. (Пример: `ServerAdminPassword password`).
3. Включаем сервер.
4. Заходим в игру и на сервер, открываем консоль нажатием кнопки **TAB**.
5. Авторизируемся на сервере как администратор указывая команду: `enablecheats AdminPassword`. (Пример: `enablecheats password`).
### Второй способ
Добавляем игроков в белый список.
1. Выключаем сервер.
2. Создать файл `AllowedCheaterSteamIDs.txt` (Путь: `ShooterGame/Saved/AllowedCheaterSteamIDs.txt`).
3. Указать Steam ID игрока, если администраторов несколько, Steam ID нужно указывать с новой строчки.
4. Включаем сервер.
5. Открываем графическую админку командой `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,504 @@
Скачать [пример](https://disk.yandex.ru/d/UJJK2Ttm1amJmg)
??? example
```xml
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Grandstream XML Provisioning Configuration -->
<gs_provision version="1">
<mac>000b82dc084a</mac>
<config version="1">
<!-- #################################################################### -->
<!-- ## Шаблонный файл для Grandstream XML Config ## -->
<!-- #################################################################### -->
<!-- # Account 1: -->
<!-- # Account Active. 0 - No, 1 - Yes. Default value is 0 -->
<!-- # Number: 0, 1 -->
<P271>1</P271>
<!-- # Account Name -->
<P270>111</P270>
<!-- # SIP Server -->
<P47>ast1.domain.com</P47>
<!-- # SIP User ID -->
<P35>111</P35>
<!-- # SIP Authenticate ID -->
<P36>111</P36>
<!-- # SIP Authenticate Password -->
<P34>pass</P34>
<!-- # Name (Display Name, e.g., John Doe) -->
<P3>111</P3>
<!-- -->
<!-- ### IP Address. -->
<!-- # IP Address Mode. 0 - DHCP, 1 - Static IP, 2 - PPPoE -->
<!-- # Number: 0,1,2 -->
<!-- # Mandatory -->
<!-- # Reboot required -->
<!-- # If you want to use this tool to set IP address, set P8=1 then. -->
<P8>0</P8>
<!-- -->
<!-- ############################################ -->
<!-- # Все что ниже менять под свои требования # -->
<!-- ############################################ -->
<!-- -->
<!-- # TFTP конфиг место загрузки -->
<P212>0</P212>
<P237>ast1.domain.com</P237>
<!-- -->
<!-- # NTP Изменить на свой -->
<P30>dc.domain.com</P30>
<!-- -->
<!-- # Часовой пояс -->
<!-- # GMT+03:00 (Moscow, Russia) MSK-3MSD,M3.5.0/2,M10.5.0/3 -->
<!-- # GMT+03:00 (St.Petersburg, Russia) MST-3MDT,M3.5.0/2,M10.5.0/3 -->
<!-- # GMT+04:00 (Abu Dhabi, Baku) TZR-4 -->
<!-- # GMT+05:00 (Islamabad, Ekaterinburg, Karachi, Tashkent)TZS-5 -->
<!-- # GMT+05:30 (Chennai, New Delhi, Mumbai) TZT-5:30 -->
<!-- # GMT+05:45 (Kathmandu) TZU-5:45 -->
<!-- # GMT+06:00 (Almaty, Astana, Dhaka, Novosibirsk) TZV-6 -->
<!-- # GMT+06:30 (Rangoon) TZW-6:30 -->
<!-- # GMT+07:00 (Bankok, Hanoi, Krasnoyarsk) TZX-7 -->
<!-- # GMT+07:00 (Jakarta) WIB-7 -->
<!-- # GMT+08:00 (Beijing, Taipei, Kuala Lumpur, Irkutsk) TZY-8 -->
<!-- # GMT+08:00 (Singapore) SGT-8 -->
<P64>TZS-5</P64>
<!-- -->
<!-- # Маски для установки соответствия звонящего мелодии звонка -->
<!-- # 1 строка - правило, 2 - тип звонка -->
<!-- # 0 - системная, 1 2 3 - соответствуют 1 2 3 кастомному звонку -->
<!-- -->
<!-- # Правило №1 -->
<P1488>9xx[1-3]xx</P1488>
<P1489>2</P1489>
<!-- # Правило №2 -->
<!-- #<P1490></P1490> -->
<!-- #<P1491>0</P1491> -->
<!-- # Правило №3 -->
<!-- #<P1492></P1492> -->
<!-- #<P1493>0</P1493> -->
<!-- -->
<!-- # Правило №4 -->
<!-- #<P6716></P6716> -->
<!-- #<P6717>0</P6717> -->
<!-- -->
<!-- # Правило №5 -->
<!-- #<P6718></P6718> -->
<!-- #<P6719>0</P6719> -->
<!-- # Правило №6 -->
<!-- #<P6720></P6720> -->
<!-- #<P6721>0</P6721> -->
<!-- # Правило №7 -->
<!-- #<P26064></P26064> -->
<!-- #<P26065>0</P26065> -->
<!-- # Правило №8 -->
<!-- #<P26066></P26066> -->
<!-- #<P26067>0</P26067> -->
<!-- # Правило №9 -->
<!-- #<P26068></P26068> -->
<!-- #<P26069>0</P26069> -->
<!-- # Правило №10 -->
<!-- #<P26096></P26096> -->
<!-- #<P26097>0</P26097> -->
<!-- # Длительность звонка, стандарт на 60сек -->
<!-- # Диапазон 30-3600сек -->
<P1328>60</P1328>
<!-- -->
<!-- ############################################ -->
<!-- # Все что ниже менять под свои требования # -->
<!-- ############################################ -->
<!-- -->
<!-- # Язык -->
<P1362>ru</P1362>
<!-- # Формат даты -->
<!-- # 2: dd-mm-yyyy eg. 31-10-2011 -->
<P102>2</P102>
<!-- # Пароль для админа -->
<P2>PassW0RD</P2>
<!-- # Установка проверки обновлений файла конфига и период -->
<P194>1</P194>
<P193>120</P193>
<!-- -->
<!-- # Firmware Upgrade Confirmation. 0 - No, 1 - Yes. Default is 1. -->
<P8375>1</P8375>
<!-- # Download Firmware File -->
<!-- # Firmware Upgrade Via. 0 - TFTP, 1 - HTTP, 2 - HTTPS, 3 - FTP, 4 - FTPS. Default is 1 -->
<P6767>0</P6767>
<!-- # Firmware Server Path -->
<P192>ast1.domain.com/0415</P192>
<!-- # Мелодия на аккаунт -->
<!-- # 0 - системная, 1 2 3 - соответствуют 1 2 3 кастомному звонку -->
<P104>1</P104>
<!-- # Громкость от 0 до 7 -->
<P8352>2 </P8352>
<!-- -->
<!-- #################################################################### -->
<!-- ## Example P values End ## -->
<!-- #################################################################### -->
<!-- ### For more P values, please download full template file at: http://www.grandstream.com/sites/default/files/Resources/config-template.zip ### -->
<!-- ### This tool will only change the field of SIP accounts, IP address from the CSV file or from the manual settings, all other settings will be populated to XML as the same in TXT template. ### -->
<P26050>0</P26050>
<P2981>0</P2981>
<P26051>60</P26051>
<P1696>0</P1696>
<P2983>0</P2983>
<P26054>1</P26054>
<P2985>0</P2985>
<P2987>0</P2987>
<P290>{ x+ | *x+ | *xx*x+ }</P290>
<P2988>0</P2988>
<P26058>1</P26058>
<P291>0</P291>
<P26059>1</P26059>
<P2865>127</P2865>
<P330>0</P330>
<P332>0</P332>
<P2906>0</P2906>
<P333>1</P333>
<P298>0</P298>
<P2907>1</P2907>
<P334>6</P334>
<P90>0</P90>
<P335>2</P335>
<P2909>f1=350,f2=440;</P2909>
<P91>0</P91>
<P92>0</P92>
<P6770>1</P6770>
<P93>0</P93>
<P2589>0</P2589>
<P6771>3</P6771>
<P338>0</P338>
<P1339>0</P1339>
<P94>0</P94>
<P2465>127</P2465>
<P2340>0</P2340>
<P95>0</P95>
<P2341>0</P2341>
<P96>97</P96>
<P22030>0</P22030>
<P2342>0</P2342>
<P97>1</P97>
<P2343>0</P2343>
<P98>97</P98>
<P99>0</P99>
<P10>168</P10>
<P2346>0</P2346>
<P11>0</P11>
<P2347>0</P2347>
<P12>160</P12>
<P8300>0</P8300>
<P8389>0</P8389>
<P2348>0</P2348>
<P13>255</P13>
<P14>255</P14>
<P15>0</P15>
<P901>80</P901>
<P16>0</P16>
<P2991>0</P2991>
<P17>0</P17>
<P2992>0</P2992>
<P18>0</P18>
<P19>0</P19>
<P8021>389</P8021>
<P2995>0</P2995>
<P2996>0</P2996>
<P5005>1440</P5005>
<P1464>0</P1464>
<P8027>3</P8027>
<P1340>0</P1340>
<P1341>0</P1341>
<P340>0</P340>
<P2753>0</P2753>
<P2914>0</P2914>
<P342>0</P342>
<P2754>1</P2754>
<P1343>0</P1343>
<P2915>0</P2915>
<P343>f1=350,f2=440;</P343>
<P2755>0</P2755>
<P2916>0</P2916>
<P182>0</P182>
<P183>0</P183>
<P344>f1=350,f2=440,c=10/10;</P344>
<P2595>1</P2595>
<P1345>0</P1345>
<P345>f1=440,f2=480,c=200/400;</P345>
<P184>0</P184>
<P346>f1=440,f2=480,c=200/400;</P346>
<P32000>0</P32000>
<P347>f1=440,f2=440,c=25/525;</P347>
<P186>0</P186>
<P1348>0</P1348>
<P32001>0</P32001>
<P348>f1=480,f2=620,c=50/50;</P348>
<P20713>0</P20713>
<P1349>0</P1349>
<P349>f1=480,f2=620,c=25/25;</P349>
<P188>0</P188>
<P8392>0</P8392>
<P32005>0</P32005>
<P2353>0</P2353>
<P32006>0</P32006>
<P103>0</P103>
<P2354>1</P2354>
<P8396>0</P8396>
<P20>0</P20>
<P2355>0</P2355>
<P8397>1</P8397>
<P9>192</P9>
<P21>0</P21>
<P8399>4</P8399>
<P22>0</P22>
<P23>0</P23>
<P24>0</P24>
<P25>0</P25>
<P26070>30</P26070>
<P26>0</P26>
<P27>0</P27>
<P28>0</P28>
<P29>0</P29>
<P8031>50</P8031>
<P8032>30</P8032>
<P8033>0</P8033>
<P26076>0</P26076>
<P8034>0</P8034>
<P8035>0</P8035>
<P8037>0</P8037>
<P351>0</P351>
<P2889>0</P2889>
<P191>1</P191>
<P352>XML Service</P352>
<P2765>127</P2765>
<P231>1</P231>
<P1357>0</P1357>
<P32010>0</P32010>
<P32011>0</P32011>
<P198>100</P198>
<P2361>0</P2361>
<P32015>0</P32015>
<P2363>0</P2363>
<P32016>0</P32016>
<P238>0</P238>
<P2489>0</P2489>
<P8443>30</P8443>
<P2365>127</P2365>
<P2366>0</P2366>
<P31>1</P31>
<P22054>0</P22054>
<P32>60</P32>
<P2367>0</P2367>
<P37>2</P37>
<P38>12</P38>
<P39>5004</P39>
<P2895>1</P2895>
<P1485>30</P1485>
<P1487>0</P1487>
<P1363>0</P1363>
<P1364>0</P1364>
<P1365>0</P1365>
<P1526>0</P1526>
<P240>0</P240>
<P1366>0</P1366>
<P1403>1</P1403>
<P2653>0</P2653>
<P32020>0</P32020>
<P1404>1</P1404>
<P2654>1</P2654>
<P32021>0</P32021>
<P2655>0</P2655>
<P1406>0</P1406>
<P2495>1</P2495>
<P244>1500</P244>
<P4428>0</P4428>
<P246>MTZ+6MDT+5,M4.1.0,M11.1.0</P246>
<P1408>1</P1408>
<P32025>0</P32025>
<P122>1</P122>
<P32026>0</P32026>
<P40>5060</P40>
<P22100>0</P22100>
<P8454>0</P8454>
<P21901>5</P21901>
<P22102>0</P22102>
<P129>0</P129>
<P46>2</P46>
<P49>1</P49>
<P1650>1</P1650>
<P8338>1</P8338>
<P1410>1</P1410>
<P1411>0</P1411>
<P250>400</P250>
<P1376>0</P1376>
<P26018>0</P26018>
<P32030>0</P32030>
<P2789>0</P2789>
<P1414>1</P1414>
<P32031>0</P32031>
<P2665>127</P2665>
<P1415>2</P1415>
<P2380>0</P2380>
<P130>0</P130>
<P2382>1</P2382>
<P32035>0</P32035>
<P132>2</P132>
<P7050>0</P7050>
<P1419>0</P1419>
<P32036>0</P32036>
<P2384>0</P2384>
<P258>0</P258>
<P133>1</P133>
<P50>0</P50>
<P9999>0</P9999>
<P7052>1194</P7052>
<P135>0</P135>
<P7053>1</P7053>
<P51>0</P51>
<P52>0</P52>
<P137>0</P137>
<P7055>0</P7055>
<P2388>0</P2388>
<P138>20</P138>
<P2389>0</P2389>
<P2301>0</P2301>
<P139>20</P139>
<P2302>1</P2302>
<P2303>0</P2303>
<P57>0</P57>
<P2304>0</P2304>
<P58>8</P58>
<P8346>0</P8346>
<P59>4</P59>
<P2305>0</P2305>
<P2306>0</P2306>
<P8348>Forward</P8348>
<P7901>0</P7901>
<P1382>0</P1382>
<P2795>1</P2795>
<P1384>0</P1384>
<P1385>0</P1385>
<P260>180</P260>
<P261>90</P261>
<P1387>0</P1387>
<P32040>0</P32040>
<P262>0</P262>
<P32041>0</P32041>
<P263>0</P263>
<P264>0</P264>
<P1301>0</P1301>
<P1426>0</P1426>
<P265>0</P265>
<P1302>0</P1302>
<P266>0</P266>
<P2553>0</P2553>
<P32045>0</P32045>
<P267>1</P267>
<P2554>1</P2554>
<P32046>0</P32046>
<P143>1</P143>
<P2555>0</P2555>
<P60>18</P60>
<P144>1</P144>
<P2395>1</P2395>
<P61>9</P61>
<P145>1</P145>
<P22120>80</P22120>
<P2397>0</P2397>
<P62>98</P62>
<P29610>200</P29610>
<P22121>443</P22121>
<P2398>30</P2398>
<P63>0</P63>
<P2399>3</P2399>
<P148>Grandstream GXP1615</P148>
<P22123>0</P22123>
<P65>0</P65>
<P2311>0</P2311>
<P8353>0</P8353>
<P8354>10</P8354>
<P2313>15</P2313>
<P22126>1</P22126>
<P8355>20</P8355>
<P2319>0</P2319>
<P1555>0</P1555>
<P1558>26</P1558>
<P1433>300</P1433>
<P272>0</P272>
<P1559>46</P1559>
<P1434>200</P1434>
<P1310>0</P1310>
<P1311>0</P1311>
<P1312>0</P1312>
<P276>0</P276>
<P1438>1</P1438>
<P1439>0</P1439>
<P2689>0</P2689>
<P2565>127</P2565>
<P21896>0</P21896>
<P72>1</P72>
<P22131>0</P22131>
<P21898>162</P21898>
<P8362>0</P8362>
<P21899>0</P21899>
<P2323>0</P2323>
<P2324>0</P2324>
<P78>0</P78>
<P79>101</P79>
<P2325>0</P2325>
<P6758>0</P6758>
<P2329>1</P2329>
<P1683>5</P1683>
<P1684>1</P1684>
<P2971>0</P2971>
<P2973>0</P2973>
<P26043>0</P26043>
<P26044>0</P26044>
<P2975>0</P2975>
<P1565>0</P1565>
<P1566>0</P1566>
<P2977>0</P2977>
<P1567>0</P1567>
<P2853>0</P2853>
<P26047>0</P26047>
<P1568>0</P1568>
<P2854>1</P2854>
<P2979>0</P2979>
<P2855>0</P2855>
<P2695>1</P2695>
<P285>1</P285>
<P286>1</P286>
<P4506>0</P4506>
<P288>1</P288>
<P4507>86400</P4507>
<P81>0</P81>
<P2453>0</P2453>
<P8371>0</P8371>
<P2454>1</P2454>
<P84>20</P84>
<P2330>0</P2330>
<P2455>0</P2455>
<P85>4</P85>
<P2331>0</P2331>
<P6763>0</P6763>
<P87>0</P87>
<P208>0</P208>
<P88>0</P88>
<P8376>1</P8376>
<P209>50</P209>
<P2338>0</P2338>
<P2339>0</P2339>
</config>
</gs_provision>
```

@ -0,0 +1,111 @@
# Настройка телефонов через TFTP сервер
Опустим настройку самого TFTP сервера, в сети много есть информации по этому вопросу.
## Правка начального шаблона
Для начала, нам потребуется получить файл шаблона и немного его отредактировать.
Скачать можно c [облака](https://disk.yandex.ru/d/UJJK2Ttm1amJmg).
| **Параметры** | **Описание** |
| --- | --- |
| P47 | адрес сервера Астериск |
| P34 | пароль авторизации |
| P237 | сервер и папка, откуда берется конфиг |
| P30 | ntp сервер для синхронизации времени |
| P64 | часовой пояс |
| P2 | пароль на админку |
| P192 | сервер и папка, откуда берется обновление прошивки |
сохраняем файл.
## Заполнение файла с настройками
Чтобы не вводить номера телефонов в каждый файл, существует возможность по созданию файла с настройками.
Скачать файл можно [тут](https://disk.yandex.ru/d/S7XKjHypTigfyg). В файле заполняем:
| Параметр | Значение |
| --- | --- |
| `MAC` | MAC адрес |
| `User_ID_1` | номер |
| `Password_1` | пароль |
| `Auth_ID_1` | номер |
| `SIP_Name_1` | номер |
Файл сохраняем в формате `scv`, разделители **запятые**. Он нам потребуется дальше.
## Создание конфиг файлов
Для создания конфиг файлов используется программа [GSXmlGenerator_3.5](https://disk.yandex.ru/d/I3HvTLTLXHv4sA)
![](../../../images/other/phone/grandstream_01.png)
Запускаем программу, в ней:
| Параметр | Значение |
| --- | --- |
| Configuration Template | путь где находится шаблон |
| Output Path | путь до папки, куда будут сохраняться готовые файлы |
| Use CSV File | путь до файла csv с настройками |
После нажимаем на **Run with CSV as Input**
## Папка на tftp сервере
Создадим папку на tftp сервере, откуда телефон будет брать конфиг файл.
К примеру это будет папка `test`. Далее в папку следует закачать:
- файл прошивки
- 3 файла звонков (не обязательно)
- файлы конфигов
Файлы можно взять по [ссылке](https://disk.yandex.ru/d/4eji_swJJdshNQ)
В итоге получится такое содержание папки:
![](../../../images/other/phone/grandstream_02.png)
## Настройка на телефоне
Есть 2 способа настройки - ручной и автоматический
=== "Автоматический"
Способ через конфигурирование DHCP и прописывание 66 опции.
Открываем оснастку DHCP сервера и идем в параметры сервера. Далее ПКМ на центральной части - Настроить параметры:
![](../../../images/other/phone/grandstream_03.png)
Ищем 066 параметр: 066 Имя узла сервера загрузки и прописываем путь до папки с конфигами:
![](../../../images/other/phone/grandstream_04.png)
Нажимаем ОК.
Теперь при включении телефона, телефон сам получит настройки подключения и сам обновит firmware
=== "Ручной"
Включаем телефон и заходим на web-страницу администрирования:
Стандартный логин/пароль - `admin`/`admin`
Далее переходим на вкладку **Maintenance** и выбираем в выпадающем списке **Upgrade and Provisioning**:
![](../../../images/other/phone/grandstream_05.png)
На открывшейся странице ищем раздел **Config**. Выбираем метод скачивание через tftp и указываем путь до нашего сервера.
Внизу нажимаем **Save and Apply**.
![](../../../images/other/phone/grandstream_06.png)
После сохранения вверху **Reboot**
![](../../../images/other/phone/grandstream_07.png)
После перезагрузки, телефон сам скачает обновление с сервера.

@ -0,0 +1,2 @@
- [Администрирование АТС](https://kaskadkm.ru/tel_s/instr/iPECS-MG_RU_v1.7.pdf)
- [Web-администрирование](https://deace.by/files/lg/mg/RU_Web.pdf)

@ -0,0 +1,41 @@
## Поменять местами номера
в PGM112 ищем номера и меняем
## Настройка IP телефона
PGM 106 и вводим MAC адрес, номер телефона (ID)
PGM 112 ищем IP телефон с заданным IP адресом и назначаем номер
## Настройка цепочки входящего звонка
PGM 200, смотри группу,
PGM 201-202. ⇒ PGM202 (Forward Destination) указываем номер куда перенаправлять
## Международная связь
PGM 137
- 1 - все открыто
- 2 - закрыто
## Добавление в группу на входящий звонок
PGM 200, смотри группу
## Настройка аналоговых линий
PGM 167 - 1 порт = 1 линия
## Настройка цифровых линий и маски набора
PGM 251-252
## Блокировка номера
PGM 262
## Настройка исходящего номера
PGM131-135 c указанием номера

@ -0,0 +1,36 @@
Иногда требуется сделать так, чтобы текущее голосовое приветствие было погромче, или нужно его изменить. Чтобы это сделать, открываем веб консоль станции, идем в `S/W Upgrade``AAFU Upload/Download`
Там выбираем `Individual SysGreeting Download` - это список всех голосовых приветсвий и сообщений, записанных в память АТС.
Далее 2 варинта:
1. Создать свое
2. Отредактировать текущее
## Отредактировать текущее
Скачиваем программу [Audacity](https://www.audacityteam.org/download/) , открываем файл, скачанный с АТС и ползунком делаем громче. Тут же можно и проверить:
![](../../../images/other/phone/ipecs01.png)
далее сохраняем:
![](../../../images/other/phone/ipecs02.png)
В окне сохранения ничего не меняем и сохраняем.
Теперь нужно конвертировать в формат АТС - `G.711 A-law wave`
[Скачиваем ПО](https://cloud.st1t.ru/s/dm5gYGP6f57t8Ex). В нем открываем наш файл. Далее:
![](../../../images/other/phone/ipecs03.png)
![](../../../images/other/phone/ipecs04.png)
![](../../../images/other/phone/ipecs05.png)
Готовый файл загружаем на АТС, выбирая `Individual SysGreeting Upload`
Чтобы применить измененное приветствие, идем в `GM259`, вводим номер таблицы (1) и в поле `Announcement No` ставим номер загруженного файла. Нажимаем сохранить и проверяем:
![](../../../images/other/phone/ipecs06.png)

@ -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,141 @@
## Требования
- Бекапим все, что раньше было на жестких дисках, так как в процессе установки все будет стерто и отформатировано.
- USB флешка что будет выступать в роли загрузчика, должна быть более 2 Гб
- Монитор и клава с мышкой для отладки возможных проблем
- Сам Microserver должен быть в той же сети, что и ПК с которого проводим настройку
## Загрузочная флешка
Начальная стадия установки DSM, это создание загрузочной флешки. Путем тестов, нашел стабильную версию загрузчика - **v1.02b**, под **ds3615**
Версии собраны тут: https://mega.nz/folder/yQpw0YTI#DQqIzUCG2RbBtQ6YieScWg/folder/iJZjAJoa
Скачав нужный загрузчик, нужно его отредактировать под себя и записать на флешку.
Нам потребуется любая флешка от 2 Гб и установленные программы:
1. OSFMount - небольшая бесплатная утилита, которая позволяет монтировать ранее сделанные образы дисков и представлять их в виде виртуальных приводов. Необходима для монтирования и последующей редакции образа загрузчика.
[https://www.osforensics.com/tools/mount-disk-images.html](https://www.osforensics.com/tools/mount-disk-images.html)
2. Notepad++ - свободный текстовый редактор с открытым исходным кодом для Windows. Необходима для редактирования **grub.cfg**
[https://notepad-plus-plus.org/](https://notepad-plus-plus.org/)
3. Rufus - это утилита, которая помогает форматировать и создавать загрузочные Flash. Необходима для записи загрузчика.
[https://rufus.ie/](https://rufus.ie/)
Данные программы, кроме OSFMount, могут быть и другими, в зависимости от вашего предпочтения.
Открываем скачанный необходимый загрузчик в программе OSFMount, монтируем образ.
![](../../images/other/synology/install-synology-xpenology-on-hpe-microserver-gen10-amd-1.webp)
Открываем ранее скачанный образ загрузчика
![](../../images/other/synology/install-synology-xpenology-on-hpe-microserver-gen10-amd-2.webp)
Выбираем необходимый нам раздел. В нём находится нужный нам для редакции файл **grub.cfg**
![](../../images/other/synology/install-synology-xpenology-on-hpe-microserver-gen10-amd-3.webp)
Обязательно снимаем галочку с опции: read only - только для чтения. Монтируем образ и открываем необходимый нам файл **grub.cfg**
![](../../images/other/synology/install-synology-xpenology-on-hpe-microserver-gen10-amd-4.webp)
Редактируем в Notepad++
![](../../images/other/synology/install-synology-xpenology-on-hpe-microserver-gen10-amd-5.webp)
![](../../images/other/synology/install-synology-xpenology-on-hpe-microserver-gen10-amd-7.webp)
Редактируем значения:
- `set vid=0x`(Ваш vid - обязательно)
- `set pid=0x`(Ваш pid - обязательно)
!!! info
К вопросу о значении "0x" (мнения разнятся).....
Загрузчик имеет исходный формат (0xabcd). Значение 0x говорит что это шестнадцатеричный код.
Если VID и PID вашей флешки состоит из цифр (1234), то без значения "0x" загрузчик работает , если имеются буквы (12АБ), то без значения "0x" может не сработать.
Потому лучше прописывайте VID и PID как в исходнике: "0xВаши данные"
!!! info "Где узнать vid и pid флешки"
Получить vid и pid не сложно. Нужно воспользоваться одной из программ.
[http://flashboot.ru/files/vidpid/](http://flashboot.ru/files/vidpid/)
[https://www.antspec.com/usbflashinfo/](https://www.antspec.com/usbflashinfo/)
[https://www.usbdev.ru/files/usbflashinfo/](https://www.usbdev.ru/files/usbflashinfo/)
[https://www.synology.com/ru-ru/knowledgebase/DSM/tutorial/Compatibility_Peripherals/How_do_I_check_the_PID_VID_of_my_USB_device](https://www.synology.com/ru-ru/knowledgebase/DSM/tutorial/Compatibility_Peripherals/How_do_I_check_the_PID_VID_of_my_USB_device)
- `set sn=Ваш серийник`
- `set mac1=Ваш mac1`
- `set mac1=Ваш mac2,3,4` (если сетевая карта имеет больше одного порта)
Значения **set sn** и **set mac** можно оставить по дефолту, если вам не нужны такие функции, как транскодинг, Push уведомления и QuickConnect.
Можно вставить сгенерированный серийный номер из генератора: https://xpenogen.github.io/serial_generator/index.html
Так же, необязательно, но лучше отредактировать значение:
- `set timeout='1'` - изменить значение "1" на другое, скажем на 5 или больше.
Это значение отвечает на время видимости начального загрузчика из трёх пунктов. Многие не успевают прочесть то, что там написано.
Изменение этого значения даст возможность увеличить время отображения начальной страницы
Отредактировав под себя **grub.cfg** , сохраняем его и размонтируем образ
![](../../images/other/synology/install-synology-xpenology-on-hpe-microserver-gen10-amd-8.webp)
## Запись на флешку
Теперь можно записать загрузчик на флешку
Открываем , выбираем наш, уже правленый образ загрузчика и записываем на флешку. На скриншоте ниже, указано что выбрать.
![](../../images/other/synology/install-synology-xpenology-on-hpe-microserver-gen10-amd-11.webp)
Ну вот и всё, загрузочная флешка готова. Можно начинать установку DSM
Из личного опыта.. Всегда сохраняйте свой, правленый образ загрузчика. Всякое может случиться и всегда полезно иметь уже готовый для записи образ.
## Установка Xpenology
Вставляем флешку с записанным загрузчиком во внутренний порт нашего Microserver gen10. Нужно подключить монитор, в UEFI отключить загрузку со всего, кроме нашей флешки.
После запустится установка. На мониторе будет "Happy Hacking" - Счастливый взлом. То есть всё хорошо.
![](../../images/other/synology/install-synology-xpenology-on-hpe-microserver-gen10-amd-15.webp)
Далее, запускаем Synology Assistant для поиска своего сервера. Скачать можно по ссылке: https://archive.synology.com/download/Utility/Assistant/6.2-24922
![](../../images/other/synology/install-synology-xpenology-on-hpe-microserver-gen10-amd-16.webp)
Нашли свой сервер, вошли по ip и запускаете дальнейшую установку. Нажимаем на кнопку **Установить**. Далее на **Установить вручную**
!!! warning "Важно"
Выбирать только **Установка вручную**, иначе скачается последний образ и не запустится.
Необходимо указать файл с ОС DSM. Нужную нам версию можно скачать по ссылке: https://global.download.synology.com/download/DSM/release/6.2.1/23824/DSM_DS918%2B_23824.pat
![](../../images/other/synology/install-synology-xpenology-on-hpe-microserver-gen10-amd-19.webp)
Соглашаемся, что данные на дисках будут удалены.
![](../../images/other/synology/install-synology-xpenology-on-hpe-microserver-gen10-amd-21.webp)
Установка долгая, может занять до 20 минут.
После того, как Xpenology установится, нужно будет создать учётную запись
Создаём учётную запись
![](../../images/other/synology/install-synology-xpenology-on-hpe-microserver-gen10-amd-26.webp)
Предложение по созданию Synology QuickConnect'а отметаем, так как для его работы необходима Реальная Валидная пара. Снизу будет едва заметная кнопка.
Готово
![](../../images/other/synology/install-synology-xpenology-on-hpe-microserver-gen10-amd-29.webp)
Дальнейшая настройка не сложная.
!!! danger
В Панели управления, DSM будет предлагать обновить версию до 6.2.4. Ни в коем случае не обновляемся. Загрузчика на эту версии НЕТ.
Настройку разделов провести в File Station, ничего сложного там нет, мастер проведет по всем шагам.
После настроек, советую открыть так называемый ROOT доступ: [https://www.synology.com/ru-ru/knowledgebase/DSM/tutorial/General_Setup/How_to_login_to_DSM_with_root_permission_via_SSH_Telnet](https://www.synology.com/ru-ru/knowledgebase/DSM/tutorial/General_Setup/How_to_login_to_DSM_with_root_permission_via_SSH_Telnet)

@ -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,33 @@
Теперь нам нужно установить необходимые программы на ТСД. Для этого вставляем ТСД в кредл, устанавливаем на ПК набор программ для работы кредла (папка `\1.Soft\Lync\`) ждем пока ТСД определится. После того, как ТСД в кредле определился, он стал доступен в ПК и на него можно удаленно зайти для просмотра файлов.
Копируем все файлы из папки `\2.Заливка ТСД\9200CE7\after Update\` в папку на ТСД **Application**, подтверждаем замену.
Выполняем импорт настроек, чтобы ТСД не засыпал и не просил калибровку после перезагрузки. Запускаем из папки **Application** поочередно файлы: `9190_NoCalibration+RadioOn.reg` и `NoSleepCE.reg`, соглашаемся со всем.
Для настройки энергопотребления терминала необходимо на ТСД зайти в настройки, выбрать **Backlight**.
![](../../images/other/tsd/flashing-tsd-mc9200-ce7_3.png)
На вкладке **Battery Power** убрать галочку со строчки **Disable backlight if device is not used for**.
![](../../images/other/tsd/flashing-tsd-mc9200-ce7_4.png)
Перейти на вкладку **External Power** и так же убрать галочку со строки **Disable backlight if device is not used for**.
![](../../images/other/tsd/flashing-tsd-mc9200-ce7_5.png)
Перейти на вкладку **Brightness** и выставить ползунок на двоечку.
![](../../images/other/tsd/flashing-tsd-mc9200-ce7_6.png)
Затем возвращаемся в меню настроек и выбираем пункт **Power**.
![](../../images/other/tsd/flashing-tsd-mc9200-ce7_7.png)
Здесь, во вкладке **Advanced**, ставим галочки на обоих пунктах и выбираем 5 минут из раскрывающегося списка.
![](../../images/other/tsd/flashing-tsd-mc9200-ce7_8.png)
Переходим на вкладку **CPU Power**, выбираем **Max Perfomance**, и нажимаем кнопку **Apply**.
![](../../images/other/tsd/flashing-tsd-mc9200-ce7_9.png)

@ -0,0 +1,37 @@
Теперь надо настроить **TelnetCE**, для этого на ПК куда подключен кредл, устанавливаем ПО из папки `\1.Soft\Wavelink\` . Нам нужен файл **MC 9200 CE 7.0**
Желательно ставить его и все другие программы в разные папки. Для примера `C:\Wavelink\mc9200_ce7\`
После установки запускаем программу. Выйдет окно
![](../../images/other/tsd/flashing-tsd-mc9200-ce7_24.png)
## Host Profile
Для начала нам требуется настроить **Host Profile**. Нажимаем на кнопку **Host Profile** и открывается новое окно. Если в нем пусто, то нужно импортировать профиль. Если есть другие профили, то их удаляем (кроме случаем работы с несколькими профилями на ТСД). Далее закрываем окно и снизу нажимаем на кнопку **Import/Export Settings**:
![](../../images/other/tsd/flashing-tsd-mc9200-ce7_25.png)
При нажатии выйдет сообщение о том, что мы хотим сделать. Выбираем **import** и нажимаем ОК. Путь к файлу с конфигом: `\4.OHE\OHI_eburg.wltna`
![](../../images/other/tsd/flashing-tsd-mc9200-ce7_26.png)
Для проверки настроек, заходим в **Host Profile**, название должно быть **OHI_WMS**, должны быть прописаны ваш адрес сервера протокол и порт. Остальное оставляем по умолчанию.
## Улучшение профиля
Заходим в **Emulation Parameters** и отрываем заранее сохраненный файл. Путь к файлу `4.OHE\termcfg_my.bin`. После нажимаем на значок дискеты **Save**
![](../../images/other/tsd/flashing-tsd-mc9200-ce7_27.png)
Краткое описание параметров, которые настроены в файле:
| Группа | Раздел | Параметр | Значение | Описание |
|--|--|--|--|--|
| Emulation | Common | Key Macros | из файла по пути \4.OHE\Функциональные клавиши (F) | Макросы для работы функц. клавиш. Напр F1-F10 |
| Emulation | Display | Force black & white | Yes | Установка белого фона |
| Emulation | Display | Hide horizontal Scroll bar | Yes | Скрываем горизонтальную полосу прокрутки |
| Emulation | Display | Hide vertical scroll bar | Yes | Скрываем вертикальную полосу прокрутки |
| Emulation | Display | Hide menu | Yes | Скрываем системное меню |
| Emulation | Display | Menu toogle key | hex сочетание клавиш | Cочетание клавиш для вывода меню программы |
| Emulation | Display | Start Menu | Hide start menu | Скрывать меню Telnet |

@ -0,0 +1,63 @@
Запускаем из папки **Application** файл обновления модуля Wi-Fi с помощью файла `FUSION_X_2.03.0.0.027R_MPA3_CE70`. Соглашаемся с путем установки и жмем ОК. После ТСД перезагрузится.
Для начальной настройки Wi-Fi подключения, нажимаем на значок в системном трее и выбираем **Manage Profile**:
![](../../images/other/tsd/flashing-tsd-mc9200-ce7_10.png)![](../../images/other/tsd/flashing-tsd-mc9200-ce7_11.png)
Видим соединение **101**, выбираем его и удаляем.
![](../../images/other/tsd/flashing-tsd-mc9200-ce7_13.png)
!!! tip "ВАЖНО!!!"
Обязательно удаляем соединение 101 и создаём новое. Ни в коем случае не надо его редактировать, или оставлять вторым соединением.
Нажимаем стилусом на пустом окне и выбираем в меню **Add**.
![](../../images/other/tsd/flashing-tsd-mc9200-ce7_12.jpg)
Название нового соединения ставим **105**. Далее буду приводить только те окна в который необходимо что-либо изменить.
![](../../images/other/tsd/flashing-tsd-mc9200-ce7_14.png)
В этом окне **Security mode** меняем на **WPA2Personal** и жмём Next.
![](../../images/other/tsd/flashing-tsd-mc9200-ce7_15.png)
В следующем окне оставляем **AES/TKIP** выбираем **pass-phrase**, нажимаем next
![](../../images/other/tsd/flashing-tsd-mc9200-ce7_16.png)
Вводим пароль доступа к сети Wi-Fi и нажимаем next.
Снимаем все галочки и нажимаем next.
![](../../images/other/tsd/flashing-tsd-mc9200-ce7_17.png)
В следующем окне прописать статический IP- адрес, ввести маску, ввести шлюз, нажать некст
![](../../images/other/tsd/flashing-tsd-mc9200-ce7_18.png)
**Battery Usage** выбираем **CAM** и нажимаем next.
На этом настройка соединения закончена. Выбираем созданное соединение и нажимаем коннект.
![](../../images/other/tsd/flashing-tsd-mc9200-ce7_19.png)
После первого присоединения к сети выскочит уведомление:
![](../../images/other/tsd/flashing-tsd-mc9200-ce7_20.jpg)
Выбираем **The internet** и нажимаем **Connect**.
Теперь необходимо сохранить настройки соединения в конфиг. Для этого вызываем меню соединения и выбираем **Options**.
![](../../images/other/tsd/flashing-tsd-mc9200-ce7_21.png)
В открывшемся окне выбираем **Export**.
![](../../images/other/tsd/flashing-tsd-mc9200-ce7_22.png)
Ставим 1 2 3 4 и 6 галочки и нажимаем **Export to file**. В открывшемся окне нажимаем ОК.
![](../../images/other/tsd/flashing-tsd-mc9200-ce7_23.png)
На этом настройка Wi-Fi завершена

@ -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,15 @@
Для правильной установки, требуется удалить все текущие версии на ТСД, для этого идем в настройки и запускаем **Remove Program**
![](../../images/other/tsd/flashing-tsd-mc9200-ce7_28.png)
Удаляем **TelnetCE**, если он там есть.
Далее идем в **File Explorer** и удаляем из всех мест **Wavelink**: `\Application\wavelink` и `program files\wavelink`
Переходим в окно программы **Wavelink product configuration**. Нажимаем кнопку **Application Only** и ждем установки.
После завершения установки, устанавливаем подготовленный конфиг в терминал. Используем для этого кнопку внизу окна **Config Only**
## **Тюнинг ТСД**
Нам нужно, чтобы при перезагрузке запускался TelnetCE, для этого ярлык с рабочего стола копируем в папку `Application\Startup`

@ -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** терминал перезагрузится и предложит откалибровать экран. После успешной калибровки экрана загрузится рабочий стол.

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

@ -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: 83 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

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

Loading…
Cancel
Save