Syncthing для offline-mode проектов EasyEDA, кросссистемная настройка

Йоу олл. В теме будет не вопрос а гайд.
Ситуация: дома win 10, на работе ubuntu 22.04, хочу чтобы проекты прозрачно зеркалились туда<->сюда, но пользоваться онлайн-акком мне не позволяет религия (ну или так быстрее отыскать проект и проще копировать его файлы для партиципанта у которого не добавлен аккаунт). Вопрос, пользоваться ли EEDA вообще (вечное Please login first при малейшем изменении платы, так что "оффлайн" он пофакту понарошку, так что я кагбы за KiCad) пожалуй отдельный.

Шаг 0, установить syncthing.

собсно обновляем пакеты, ставим всё что требуется для установки, далее добавить ключ и репу:
Форматирование (BB-код):
apt update -y
apt install gnupg2 curl apt-transport-https -y
curl -fsSL https://syncthing.net/release-key.txt | gpg --dearmor -o /etc/apt/trusted.gpg.d/syncthing.gpg
echo "deb https://apt.syncthing.net/ syncthing release" | tee /etc/apt/sources.list.d/syncthing.list
apt update
после чего будет работать команда установки:
Форматирование (BB-код):
apt install syncthing
проверить:
Форматирование (BB-код):
syncthing --version
nssm нужен потому что у windows нет systemd
Форматирование (BB-код):
winget install syncthing
winget install nssm

Шаг 1, настроить автозагрузку из под пользователя (не root, это важно)

в архиве есть каталог etc, с предустановками запуска на все возможные менеджеры линь-служб. копируем нужное оттуда если программа была установлена вручную из релихов гитхаба (там обычно более новые версии)
скопировать шаблон можно скопипастив с гитхаба, если не знаете где файл
копировать в каталог
Форматирование (BB-код):
~/.config/systemd/user/
далее делаем:
Форматирование (BB-код):
systemctl --user enable syncthing.service
systemctl --user start syncthing.service
проверить:
Форматирование (BB-код):
systemctl --user status syncthing.service
Форматирование (BB-код):
netsh advfirewall firewall add rule name="syncthing" dir=in action=allow program="C:\Program Files\syncthing\syncthing.exe" enable=yes
nssm install syncthing "c:\program files\syncthing\syncthing.exe"
sc failure syncthing reset= 40 actions= restart/15000/restart/15000/restart/15000
nssm edit syncthing
после последней команды откроется окно редактора NSSM, там надо пойти на вкладку Logon и вписать имя/пасс от пользователя Windows. есть вероятность что с пустым паролем работать не захочет

Главная страница ST (127.0.0.1:8384) не должна показывать предупреждение "не рекомендуется работать из под привилегированного пользователя". На вопрос анон статистики отвечаем No, или кто как хочет. В Actions->Settings (вверху справа) на вкладке Connections (третья) можно отключить локальное обнаружение, бо всё равно почти у всех тачки стоят позади двойного NAT.

Шаг 2, добавить устройство

В статусе This device есть графа Identification, в т ч показывающая QR. Этого достаточно чтобы связаться с тачкой.

Шаг 3, добавить каталог (кнопка + Add folder)

На Windows EasyEDA его спрашивает при первом запуске. Поменять/посмотреть - ПКМ по Projects (вверху слева), Settings, Data directory.
Синхронизировать надо ЭТОТКАТАЛОГ\projects, путь к каталогу внизу, вверху просто имя отображаемое на странице.

На Linux каталог обычно ~/.easyeda/projects

Шаг 4, доп. свойства
1. добавить в игнор файл uuidMap.json (вкладка игнора четвертая, доступна только после расшаривания каталога)
2. в Advanced (последняя вкладка) включить Ignore permissions

На вкладке Sharing (вторая) в последнюю очередь чекбоксами включается, кому шарить каталог projects. Ридонли работает если в Advanced поставить Send only, т. е. изменения исходят от нас. Но это не совсем искомый функционал. Чтобы пионэры не стёрли проекты, всё равно рекомендую снаружи каталога projects иметь регулярный бекап.

Как принять шару:

1. Зайти на страницу 127.0.0.1:8384
2. Будет диалог Да/Нет, нажать да и вписать путь внутри каталога projects (иначе ST начнёт перекидывать ещё каждый сейв в каталогах с бекапами вида offline_projects_backup\проект\20240308_122717)
3. Указать слейву такие же условия как у мастера (игнор uuidMap.json, игнор прав файла)

Чо делать с файлом uuidMap.json ?

  • на windows-слейвах (если мастер - windows) его можно не включать в игнор, т. е. всё работает полностью прозрачно
  • то же самое при совпадении linux-мастер + linux-слейв
  • на linux слейвах, принимающих от windows-мастера, надо заменить в этом файле все "\\" на "/" (две обратных косых черты на одну обычную)
  • то же самое наоборот
  • проекты которые добавляются потом, к сожалению придётся вписывать в этот json ручками, исправляя нужным образом пути к файлам (надо же было windows хоть чем-то отличаться от linux - вот чёрточки сука сделали в другую сторону, всё остальное то же самое. а, да, еще реестр придумали)

В случае выкрутасов, или надобности всё же использовать root пользователя, как чинить файлы:

Форматирование (BB-код):
sudo chown -R user:user ./aa
sudo chmod -R 666 ./aa
sudo chmod 766 ./aa
где aa - каждый каталог проекта (можно написать .sh файл чтобы быстро выдавать права каталогам)

Краткая памятка:
0. EXECUTE SYNCTHING AS USER, NOT SUDO!!

In case of any fuckery:

1. set all folders to local ownage, writable by nobody:

sudo chown -R user:user ./aa
sudo chmod -R 666 ./aa
sudo chmod 766 ./aa

2. add uuidMap.json to .stignore (fucking \\ / in paths)
how to adapt: Ctrl+F7, search /, replace by \\, all

?. easyeda may show notsaved warning (while did the write tho)

3. new projects should be enlisted in json manually, via txt file
 

Комментарии