The original setup guide covered connecting Altium directly to the
portal SQL server. That works but has three drawbacks under RU
conditions: ~60-second Altium startup over VPN, daily VPN dependency,
single point of failure at Mark Harris's hosting.
New section 11 documents the self-hosted alternative we just built and
verified end-to-end:
- Two independent mirrors:
- homework/altium-library: Gitea pull-mirror of issus/altium-library
with LFS (SchLib + PcbLib + STEP, ~6 GB)
- homework/celestial-mirror-db: MSSQL 2022 Express in Docker on
192.168.9.147, populated weekly by a pymssql-based sync job with
best-effort + row-count/schema fingerprint skip logic
- Results: Altium startup <1s (100x faster), VPN only needed once a
week for the sync runner, full control over the dataset
- Full deployment sequence (Gitea migrate API → docker compose up →
first manual full-sync → client DbLib rewrite)
- ConnectionString rewrite details (altium_reader user, LAN IP,
Encrypt=Optional/TrustServerCertificate=Yes for self-signed cert)
- MPN-to-view lookup strategies (Shift+C in Altium; dynamic SQL that
scans all 168 tables)
- Troubleshooting specific to the mirror stack
35 KiB
Подключение Celestial Altium Library к Altium Designer
Полная production-ready инструкция по подключению базы данных Celestial
(issus/altium-library, ≈212 000 компонентов, 311 views) к Altium Designer
под Windows. Все ссылки ведут на официальные источники (Microsoft Learn,
Download Center, GitHub). Альтернативы через Microsoft Store и winget msstore
не используются — они заблокированы для RU-региона.
0. Что ты получишь в итоге
- Полная database-library на ≈212 000 реальных компонентов с MPN, supplier refs, 3D-моделями производителей, параметрической фильтрацией в Altium.
- BOM заполняется автоматически при Place — никакого ручного ввода MPN.
- 311 категорийных views прямо в
Components panel(Resistors по размерам пакетов, Capacitors Ceramic/Electrolytic/Tantalum, MOSFETs N/P-Ch, MCUs, Motor Drivers, Voltage Regulators и т.д.). - Обновления прилетают автоматически по мере добавления Mark Harris'ом новых компонентов на облачный сервер.
Объём локальных файлов после клонирования: ≈4–6 GB (в основном STEP-модели через Git LFS).
1. Регистрация на портале и получение DbLib
1.1. Зарегистрируйся на портале
Открой https://portal.altiumlibrary.com/ → REGISTER → заполни форму.
Email реальный — понадобится для активации и восстановления пароля.
1.2. Создай Server Login
Портал разделяет аккаунт на портале (твой email и пароль) и логин к SQL-серверу (генерируется случайно, нужен для подключения Altium).
- Войди на портал.
Server Logins→New Login.- В списке баз выбери
altium_library→Create. - Портал сгенерирует случайные username/password — скачай или запиши их сразу, второй раз посмотреть пароль нельзя.
Важно, почему креды случайные: DbLib хранит их plain-text на диске. Mark Harris принципиально генерирует их, чтобы ты не вписал свой обычный пароль.
1.3. Скачай DbLib
Server Logins → Manage → напротив созданного логина кнопка DbLib.
Скачается файл вида Celestial_Altium_Library_-_altium_library.DbLib —
ini-файл с уже зашитой ConnectionString к твоему персональному логину.
Открой его в текстовом редакторе и проверь первую строчку после
[DatabaseLinks]:
ConnectionString = Provider=SQLNCLI11.1; User ID=alib_xxxx; Password=...; Initial Catalog=altium_library; Data Source=db.altiumlibrary.com,1433; Initial File Name=""; Server SPN=""
Ключевые детали:
Provider=SQLNCLI11.1— SQL Server Native Client 11 (deprecated Microsoft'ом в 2021, но именно его запрашивает этот DbLib). Будем ставить.Data Source=db.altiumlibrary.com,1433— сервер Mark Harris'а в OVH France (51.68.218.24), не Azure SQL.
2. Клонирование библиотеки
Репозиторий issus/altium-library хранит SchLib/PcbLib/STEP локально, база
с параметрами — на облачном SQL. Оба нужны одновременно.
2.1. Установи Git с поддержкой LFS
# Если Git ещё нет — ставим отсюда (официальный инсталлятор):
# https://git-scm.com/download/win
# В инсталляторе обязательно галочка "Git LFS support" — она по умолчанию включена.
# Проверка:
git --version
git lfs version
Без Git LFS клонирование «прошуршит» по указателям, но STEP-файлы не скачаются — вместо них будут текстовые stub'ы размером ~130 байт.
2.2. Клонируй репозиторий
git lfs install # один раз на пользователя
cd C:\Work # или куда тебе удобно
git clone https://github.com/issus/altium-library.git
Клонирование займёт 5–15 минут (≈4–6 GB через LFS).
2.3. Положи DbLib в папку репозитория
Скачанный в 1.3 файл *.DbLib скопируй в корень клонированного
репозитория — рядом с Altium Database Library V2.DbLib, symbols/,
footprints/. Это важно: в DbLib footprint/symbol refs прописаны
относительными путями, и Altium ищет их относительно DbLib-файла.
C:\Work\altium-library\
├─ Altium Database Library V2.DbLib ← шаблон из репо (не трогать)
├─ Celestial_Altium_Library_-_altium_library.DbLib ← твой, из портала
├─ symbols\
├─ footprints\
├─ STEP\
└─ ...
2.4. Обновление базы в будущем
Регулярно подтягивай свежие символы и футпринты:
cd C:\Work\altium-library
git pull
git lfs pull
3. Установка Windows-зависимостей
Это дно происходящего: тебе нужен устаревший драйвер Microsoft из
инсталлятора SQL Server 2012 SP4 Feature Pack, потому что DbLib
требует SQLNCLI11.1. Плюс Visual C++ Redistributable — без него драйвер
не зарегистрируется в реестре.
Ниже — всё через прямые MSI с download.microsoft.com, без Microsoft Store
и winget msstore (заблокированы для RU).
3.1. Visual C++ Redistributable (x86 + x64)
Если у тебя современный Windows 11 с Visual Studio / dotnet — уже стоит.
На чистой машине ставь обе архитектуры; x64 не включает x86-часть, а
она нужна для 32-битных компонентов драйвера.
Через winget (это community source, RU-блокировки не касается):
winget install --id Microsoft.VCRedist.2015+.x64 --exact --accept-package-agreements --accept-source-agreements
winget install --id Microsoft.VCRedist.2015+.x86 --exact --accept-package-agreements --accept-source-agreements
Или прямые инсталляторы:
- x64: https://aka.ms/vs/17/release/vc_redist.x64.exe
- x86: https://aka.ms/vs/17/release/vc_redist.x86.exe
3.2. SQL Server Native Client 11 (sqlncli.msi) — ОБЯЗАТЕЛЬНО
Это именно тот «старый» провайдер, который записан в DbLib. Он идёт в составе SQL Server 2012 SP4 Feature Pack и распространяется как standalone MSI.
Elevated PowerShell (запуск от администратора):
$url = "https://download.microsoft.com/download/B/E/D/BED73AAC-3C8A-43F5-AF4F-EB4FEA6C8F3A/ENU/x64/sqlncli.msi"
$msi = "$env:TEMP\sqlncli_x64.msi"
Invoke-WebRequest -Uri $url -OutFile $msi -UseBasicParsing
msiexec /i $msi /qn IACCEPTSQLNCLILICENSETERMS=YES
Флаг IACCEPTSQLNCLILICENSETERMS=YES обязателен для silent install. Без него
/qn падает без ошибки, драйвер не ставится.
Проверка установки:
Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\SQLNCLI11" -ErrorAction SilentlyContinue |
Select-Object InstalledVersion
# Должно показать InstalledVersion 11.4.x (или выше)
3.3. Microsoft OLE DB Driver 19 for SQL Server — ОПЦИОНАЛЬНО
Современный актуальный провайдер. Для Celestial как такового не нужен, но пригодится для будущих проектов с SQL Server / Azure SQL, и ставится side-by-side с SQLNCLI11 без конфликтов.
# Актуальная GA: MSOLEDBSQL 19.4.1 (2025-05-09)
$url = "https://go.microsoft.com/fwlink/?linkid=2318101" # x64 + Arm64
$msi = "$env:TEMP\msoledbsql.msi"
Invoke-WebRequest -Uri $url -OutFile $msi -UseBasicParsing
msiexec /i $msi /qn IACCEPTMSOLEDBSQLLICENSETERMS=YES
3.4. НЕ ставь Microsoft Access
Altium при проблемах с OLE DB fallback'ается на ошибку
«requires 64-bit Microsoft Access Database Engine». Это ложное сообщение.
SQLNCLI11 — это OLE DB Provider, а не ODBC и вообще не связан с Access.
Установка Access/ACE ничего не починит и не требуется.
4. Сетевой доступ до сервера
Сервер db.altiumlibrary.com (51.68.218.24, OVH France) принимает соединения
только по TCP 1433. Это порт MSSQL, и он часто фильтруется:
- Windows Firewall исходящий — обычно пропускает, но проверить стоит.
- Российские ISP — могут резать 1433 на uplink (anti-spam / anti-bruteforce).
- Корпоративные сети — почти всегда режут.
- Azure/OVH со стороны сервера — может whitelist'ить.
4.1. Проверка доступности
Test-NetConnection -ComputerName db.altiumlibrary.com -Port 1433
Ждёшь:
TcpTestSucceeded : True
Если False — либо таймаут, либо RST. Смотри RemoteAddress — там должно
быть 51.68.218.24.
4.2. Если 1433 закрыт — заворачиваем через VPN
Для твоей инфраструктуры (MikroTik + xray/AmneziaWG контейнеры на 192.168.9.147):
- На MikroTik в адрес-лист для VPN-маршрутизации добавь:
db.altiumlibrary.com(MikroTik умеет DNS-name в address-list с автообновлением)- или статически
51.68.218.24/32
- Убедись, что правило
/ip firewall mangleдля mark-routing захватывает этот адрес (поdst-address-list). - Проверь с машины:
# Должен идти через VPN-интерфейс
Test-NetConnection -ComputerName db.altiumlibrary.com -Port 1433
tracert -h 5 51.68.218.24
Важно: SQLNCLI11 по умолчанию не шифрует трафик. Пароль из DbLib летит по сети в TDS-фрейме. Если между машиной и сервером есть untrusted сегмент — VPN не только для обхода блока, но и для минимальной защиты транспорта.
5. Подключение в Altium Designer
На этом этапе у тебя должно быть:
- ✅
SQLNCLI11стоит (проверено через реестр) - ✅
db.altiumlibrary.com:1433доступен (TcpTestSucceeded : True) - ✅ DbLib лежит в папке с клонированным репо
5.1. Открой Altium Designer
Любой проект, можно пустой. Открой панель Components
(View → Panels → Components, или снизу справа Panels → Components).
5.2. Окно File-based Libraries Preferences
В панели Components нажми иконку меню (≡ или три точки — зависит от
версии AD) → в разных версиях Altium этот пункт называется по-разному:
- AD 20+ (включая 26.x):
File-based Libraries Preferences... - Старые AD:
Libraries Preferences...
Откроется окно Available File-based Libraries.
5.3. Установка DbLib
- Вкладка
Installed. - Кнопка
Installвнизу → выбериC:\Work\altium-library\Celestial_Altium_Library_-_altium_library.DbLib. - Проверь, что в списке появилась строка с типом
Database. - Галочка
Activateдолжна быть включена. - НЕ закрывай окно сразу — Altium начнёт подключение и может вывести ошибку.
5.4. Первая загрузка
На этом шаге Altium:
- Коннектится к
db.altiumlibrary.com:1433. - Выполняет ~600 SELECT-запросов (один на каждый view) для получения схемы колонок и параметров фильтрации.
- Строит локальный индекс.
На хорошем интернете через прямой канал — 30–60 секунд. Через VPN с RTT
150 мс — до 2–3 минут. Splash Altium будет показывать
Loading Document Celestial Altium Library - altium_library.DbLib.
Не перебивай, не закрывай Altium. Если висит >5 минут — смотри Troubleshooting.
5.5. Проверка результата
В Components panel сверху появится дропдаун с views. Должно быть примерно
так:
Components ▾
├─ Capacitors - Ceramic - 0402
├─ Capacitors - Ceramic - 0603
├─ ... (18 views под конденсаторы)
├─ Connectors - ... (18 views)
├─ Diodes - ... (5 views)
├─ Inductors - Power
├─ MOSFET - Single - N-Ch
├─ MOSFET - Single - P-Ch
├─ Motor Drivers Controllers
├─ Resistors - Surface Mount - 0402
├─ ... (12 views под резисторы)
└─ Voltage Regulators - DC DC Switching Regulators
Выбери, например, Resistors - Surface Mount - 0603 → справа от списка
компонентов появится панель параметрической фильтрации (Resistance,
Tolerance, Power Rating, Temperature Coefficient, Manufacturer).
Всё — база работает.
6. Использование
6.1. Размещение компонента
- В схеме → панель
Components→ выбери нужный view. - Отфильтруй по параметрам (например, Resistance = 10k, Tolerance = 1%).
- Двойной клик на компоненте → компонент появится в курсоре.
- Разместишь на схеме — Altium автоматически:
- Скачает symbol из локального
symbols/(по Library Ref из БД). - Скачает footprint из локального
footprints/. - Пропишет все параметры в атрибутах компонента (MPN, Manufacturer, Supplier, Price, Datasheet URL).
- Скачает symbol из локального
6.2. Генерация BOM
Project → Project Options → OutputJob Files → Report Outputs → Bill of Materials.
В BOM автоматически попадут Manufacturer Part Number, Manufacturer,
Supplier 1 Part Number, Supplier 1 Unit Price и т.д. — заполнять руками
ничего не нужно.
6.3. Если нужного компонента нет в Celestial
- Создай свой SchLib/PcbLib рядом с клоном (например,
C:\Work\altium-library-custom\). - В
File-based Libraries Preferences → Installedдобавь рядом со страницей Celestial DbLib. - Свои компоненты работают параллельно, без конфликтов.
Либо отправь PR в issus/altium-library — Mark принимает, если параметры и
3D-модели от производителя.
7. Troubleshooting
7.1. «64-bit Microsoft Access Database Engine required»
Причина: Altium не смог загрузить OLE DB провайдер, указанный в DbLib
(SQLNCLI11.1), и fallback'нулся на общее misleading сообщение про Access.
Решение:
- Убедись, что SQLNCLI11 стоит:
Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\SQLNCLI11" - Если стоит, а ошибка сохраняется — закрой Altium полностью (проверь через
Task Manager, что
X2.EXEне висит), запусти заново. - Если не помогло — переустанови SQLNCLI11 с
/l*v log.txtдля диагностики:msiexec /i sqlncli.msi /l*v "$env:TEMP\sqlncli.log" IACCEPTSQLNCLILICENSETERMS=YES
7.2. «Connection Failed. Check your connection settings»
Причина: драйвер OK, но не доходит до сервера.
Решение:
Test-NetConnection -ComputerName db.altiumlibrary.com -Port 1433- Если False — настрой VPN (см. раздел 4.2).
- Если True, но Altium всё равно ругается — проверь пароль в DbLib (не скопировался ли лишний пробел), либо создай новый Server Login на портале и скачай свежий DbLib.
7.3. Views с префиксом z_ в списке
Причина: DbLib устарел, в нём есть ссылки на underlying tables, которые не имеют Altium-совместимых колонок.
Решение: скачай свежий DbLib с портала (Server Logins → Manage → DbLib), замени свой. Не удаляй старый до проверки нового — если что-то пойдёт не так, вернёшь.
7.4. Components panel показывает views, но внутри пусто
Причина: сетевое подключение «оборвалось» посередине загрузки (timeout на отдельных views).
Решение:
- Закрой Altium полностью.
- Если через VPN — проверь стабильность канала.
- Запусти Altium, подожди полной загрузки (иногда нужен F5 в панели
Refresh).
7.5. «Footprint not found» при Place
Причина: компонент только что добавили в облачную БД, а локальные SchLib/PcbLib ещё не обновлены.
Решение:
cd C:\Work\altium-library
git pull
git lfs pull
В Altium: Components panel → Refresh (F5).
7.6. STEP-модели не отображаются в 3D
Причина: клон сделан без Git LFS, или git lfs pull не выполнен.
Решение:
cd C:\Work\altium-library
git lfs install
git lfs pull
Проверь размер файла STEP\*.STEP — рабочие модели весят 50–500 KB,
LFS-указатели — ровно 133 байта.
7.7. Altium падает при открытии DbLib
Причина: conflict с Altium Vault / Altium 365 workspace (попытка загружать один и тот же компонент из двух источников).
Решение: временно disconnect workspace
(File → Altium 365 → Sign Out), перезапусти Altium, подключи DbLib,
потом заново подключись к workspace.
8. Автоматизация: production-ready установщик одной командой
Чтобы поднять всё на новой машине одним вызовом — скрипт ниже. Запускать от администратора, только после того, как уже есть скачанный с портала DbLib.
#Requires -RunAsAdministrator
param(
[Parameter(Mandatory=$true)]
[string]$RepoDir = "C:\Work\altium-library",
[Parameter(Mandatory=$true)]
[string]$DbLibPath, # путь к скачанному из портала .DbLib
[switch]$InstallMSOLEDBSQL # опционально поставить ещё и современный провайдер
)
$ErrorActionPreference = "Stop"
# 1. Git + LFS
if (-not (Get-Command git -ErrorAction SilentlyContinue)) {
winget install --id Git.Git --exact --accept-package-agreements --accept-source-agreements
}
git lfs install
# 2. VC++ Redist
winget install --id Microsoft.VCRedist.2015+.x64 --exact --accept-package-agreements --accept-source-agreements
winget install --id Microsoft.VCRedist.2015+.x86 --exact --accept-package-agreements --accept-source-agreements
# 3. SQLNCLI11 — ОБЯЗАТЕЛЬНО
$sqlncli = "$env:TEMP\sqlncli_x64.msi"
Invoke-WebRequest -UseBasicParsing `
-Uri "https://download.microsoft.com/download/B/E/D/BED73AAC-3C8A-43F5-AF4F-EB4FEA6C8F3A/ENU/x64/sqlncli.msi" `
-OutFile $sqlncli
Start-Process msiexec -ArgumentList "/i", $sqlncli, "/qn", "IACCEPTSQLNCLILICENSETERMS=YES" -Wait
# 4. MSOLEDBSQL 19 (опционально)
if ($InstallMSOLEDBSQL) {
$msoledb = "$env:TEMP\msoledbsql.msi"
Invoke-WebRequest -UseBasicParsing `
-Uri "https://go.microsoft.com/fwlink/?linkid=2318101" `
-OutFile $msoledb
Start-Process msiexec -ArgumentList "/i", $msoledb, "/qn", "IACCEPTMSOLEDBSQLLICENSETERMS=YES" -Wait
}
# 5. Клон репозитория
if (-not (Test-Path $RepoDir)) {
New-Item -ItemType Directory -Path (Split-Path $RepoDir -Parent) -Force | Out-Null
git clone https://github.com/issus/altium-library.git $RepoDir
} else {
Push-Location $RepoDir
git pull
git lfs pull
Pop-Location
}
# 6. Копируем DbLib в папку репо
Copy-Item $DbLibPath -Destination $RepoDir -Force
# 7. Проверки
Write-Host "`n=== Проверки ===" -ForegroundColor Cyan
$sqlncli_ver = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\SQLNCLI11" -ErrorAction SilentlyContinue).InstalledVersion
Write-Host "SQLNCLI11 version: $sqlncli_ver"
$tcp = Test-NetConnection -ComputerName db.altiumlibrary.com -Port 1433 -WarningAction SilentlyContinue
Write-Host "db.altiumlibrary.com:1433 reachable: $($tcp.TcpTestSucceeded)"
if (-not $tcp.TcpTestSucceeded) {
Write-Warning "Порт 1433 недоступен — настрой VPN (см. раздел 4.2 инструкции)"
}
Write-Host "`nГотово. Открывай Altium → Components panel → File-based Libraries Preferences → Install → $DbLibPath" -ForegroundColor Green
Запуск:
.\install-celestial.ps1 -DbLibPath "$env:USERPROFILE\Downloads\Celestial_Altium_Library_-_altium_library.DbLib"
9. Ссылки
- Celestial Library портал: https://altiumlibrary.com/
- GitHub репозиторий: https://github.com/issus/altium-library
- Get Started: https://altiumlibrary.com/GetStarted/ConfigureAltium
- Troubleshooting: https://altiumlibrary.com/GetStarted/Troubleshooting
- Discord сообщества: https://discord.gg/MEQ5Xe5
- Mark Harris (автор): https://resources.altium.com/experts/mark-harris
Microsoft — прямые ссылки на MSI
- SQL Server Native Client 11 x64: https://download.microsoft.com/download/B/E/D/BED73AAC-3C8A-43F5-AF4F-EB4FEA6C8F3A/ENU/x64/sqlncli.msi
- MSOLEDBSQL 19 x64 + Arm64: https://go.microsoft.com/fwlink/?linkid=2318101
- MSOLEDBSQL 19 x86: https://go.microsoft.com/fwlink/?linkid=2318001
- VC++ Redist 2015-2022 x64: https://aka.ms/vs/17/release/vc_redist.x64.exe
- VC++ Redist 2015-2022 x86: https://aka.ms/vs/17/release/vc_redist.x86.exe
11. Self-hosted mirror (опционально, ускорение startup ×100)
Разделы 1–9 подключают Altium напрямую к портальному SQL-серверу Mark Harris'а. Это работает, но:
- Каждый запуск Altium — 30–90 секунд на ~600 метадата-запросов через WAN (OVH France). VPN добавляет ещё RTT.
- Требуется VPN при каждой работе с библиотекой (если RKN режет 1433 к OVH, а он обычно режет).
- Зависимость от доступности
db.altiumlibrary.com— если Mark выключит сервер, всё встанет. - Нельзя добавлять свои компоненты в общую БД — только в отдельный custom DbLib.
Альтернатива — self-hosted mirror: зеркалим и git-репо (SchLib/PcbLib/STEP через LFS), и SQL-БД (параметры компонентов). Клиенты ходят только в LAN, VPN нужен раз в неделю для sync-job'а.
Результат
- Startup Altium: <1 сек (проверено на Altium 26.4.1, январь 2026)
- Нет зависимости от WAN и от upstream'а в ежедневной работе
- Полный контроль — можно доливать свои views/компоненты
- Обновления — раз в неделю автоматически по cron
Архитектура
┌──────────────────────────┐ pull mirror (Gitea, 24h) ┌─────────────────────────┐
│ github.com/issus/ │◀─────── HTTPS + LFS ─────────│ homework/altium-library │
│ altium-library │ │ (Gitea mirror, ~6 GB) │
└──────────────────────────┘ └──────────┬──────────────┘
│ git clone
▼
┌─────────────────────────┐
│ Altium (client) │
│ SchLib/PcbLib/STEP │
│ from local clone │
└──────────┬──────────────┘
│ SQL queries
▼
┌──────────────────────────┐ weekly sync (Gitea Actions) ┌─────────────────────────┐
│ db.altiumlibrary.com │◀───── pymssql, VPN ──────────│ homework/ │
│ :1433 (upstream SQL) │ │ celestial-mirror-db │
└──────────────────────────┘ │ + MSSQL 2022 Express │
│ on 192.168.9.147:1433 │
└─────────────────────────┘
Два независимых компонента
Git-mirror (homework/altium-library):
- Gitea pull-mirror, интервал 24h, LFS включён
- Содержит SchLib, PcbLib, STEP, sample projects — всё из upstream
- Клиенты клонируют с
ssh://git@192.168.7.179:2222/homework/altium-library.gitили HTTPS по LAN
SQL-mirror (homework/celestial-mirror-db):
- Docker-стек: MSSQL 2022 Express на 192.168.9.147:1433 (LAN only)
- Sync-скрипт
sync/celestial_sync.py: best-effort, atomic swap через staging+sp_rename, row-count+schema fingerprint skip-логика - Gitea Actions workflow:
workflow_dispatch+ weekly cron понедельник 03:00 UTC - Два SQL-user'а:
sync_writer(DDL+DML для CI) иaltium_reader(SELECT для Altium)
Как развернуть с нуля
Последовательность в новой инсталляции (полный setup ~2 часа на первый раз, включая начальный sync ~40 мин):
1. Gitea pull-mirror git-репо
В Gitea UI: + → New Migration → GitHub (или через API):
Clone URL: https://github.com/issus/altium-library.git
Owner: homework
Name: altium-library
Type: Mirror (pull)
Interval: 24h
LFS: ✓ enabled
Либо через API:
curl -X POST -H "Authorization: token $GITEA_TOKEN" \
-H "Content-Type: application/json" \
"$GITEA_URL/api/v1/repos/migrate" -d '{
"clone_addr": "https://github.com/issus/altium-library.git",
"repo_owner": "homework",
"repo_name": "altium-library",
"service": "git",
"mirror": true,
"mirror_interval": "24h0m0s",
"lfs": true
}'
Первичная миграция тянет 5–6 ГБ с GitHub, занимает 30–90 минут.
2. Docker-стек celestial-mirror-db
Клонировать homework/celestial-mirror-db, заполнить .env сильными
паролями (см. .env.example), docker compose up -d. Init-контейнер
создаст БД, логины, роли. Compose-файл биндит порт на 192.168.9.147:1433
(только LAN, не 0.0.0.0). Подробная инструкция — в README репо.
3. Первый sync
В Gitea UI: Actions → Sync Celestial DB → Run workflow, mode=full-sync.
Занимает 30–60 минут через VPN. На VPN должен быть маршрут до
51.68.218.24 (OVH France) — на MikroTik это address-list с policy-based
routing через xray/AmneziaWG.
4. Подключение клиента (Altium)
# Клиентская машина
cd C:\Work
git clone ssh://git@192.168.7.179:2222/homework/altium-library.git
cd altium-library
git lfs pull
Копируем портальный DbLib рядом как -local.DbLib, правим ConnectionString:
# Было:
ConnectionString = Provider=SQLNCLI11.1; User ID=alib_xxx; Password=xxx; \
Initial Catalog=altium_library; Data Source=db.altiumlibrary.com,1433; \
Initial File Name=""; Server SPN=""
# Стало:
ConnectionString = Provider=SQLNCLI11.1; User ID=altium_reader; Password=<из .env>; \
Initial Catalog=altium_library; Data Source=192.168.9.147,1433; \
Encrypt=Optional; TrustServerCertificate=Yes; \
Initial File Name=""; Server SPN=""
Изменилось: User ID, Password, Data Source, и добавлены
Encrypt=Optional; TrustServerCertificate=Yes — потому что MSSQL в Docker
с self-signed сертификатом.
В Altium: Components panel → File-based Libraries Preferences → Installed → Uninstall старого (портального) → Install нового (local). Startup
<1 секунды.
Поиск компонента по MPN без знания категории
В DBLib-архитектуре Altium показывает компоненты в рамках одной view (категории). Если MPN известен, а категория нет:
Способ 1 — через Altium: Hotkey Shift+C (File-based Libraries Search)
→ Search for: *STSPIN32G4*, Scope: Libraries on path, Search in:
Components. Выдаст список попаданий с колонкой "Library Ref".
Способ 2 — SQL прямо в mirror: Единичный запрос с dynamic SQL просматривает все tables и находит категорию:
SET NOCOUNT ON;
DECLARE @needle NVARCHAR(100) = N'%STSPIN32G4%';
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql = @sql +
'IF EXISTS (SELECT 1 FROM [' + TABLE_NAME + '] WHERE [Part Number] LIKE @n) ' +
'SELECT ''' + TABLE_NAME + ''' AS [View], [Part Number], [Manufacturer], [Description] ' +
'FROM [' + TABLE_NAME + '] WHERE [Part Number] LIKE @n; '
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME NOT LIKE '%__staging'
AND TABLE_NAME <> 'sync_status';
EXEC sp_executesql @sql, N'@n NVARCHAR(100)', @n=@needle;
Можно обернуть в shell-функцию cfind.
Troubleshooting self-hosted mirror
Sync job висит на первой view ~10 минут и фейлится с "DBPROCESS is dead":
RKN режет TCP к 51.68.218.24:1433. Проверяй что на VPN routing для этого
IP действительно активен с 192.168.9.147.
String or binary data would be truncated: Upstream view объявляет
NVARCHAR(N) в INFORMATION_SCHEMA, но возвращает строки длиннее. Фикс в
sync-скрипте — все строковые колонки мапятся в NVARCHAR(MAX). Если
видишь такую ошибку — celestial_sync.py ещё не имеет фикса, обнови
до коммита b868b68 или новее.
Weekly sync не стартует: Gitea Actions требует чтобы в репо был
активный runner и на репо были включены Actions. Проверь
Settings → Actions → General → Enabled.
Altium Components panel пустая: SSH'нись в MSSQL и проверь:
SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE='BASE TABLE' AND TABLE_NAME NOT LIKE '%__staging';
-- Должно быть ~168.
SELECT TOP 1 * FROM dbo.sync_status ORDER BY id DESC;
-- status = 'ok', views_synced около 168, rows_synced ~250k.
Ссылки на репозитории
homework/altium-library— git mirror: https://git.h3fq32.golive.ru/homework/altium-libraryhomework/celestial-mirror-db— Docker + sync: https://git.h3fq32.golive.ru/homework/celestial-mirror-db
12. Changelog этой инструкции
| Дата | Изменения |
|---|---|
| 2026-04-18 | Первая версия. Проверено на Altium Designer 26.4.1, Windows 11, MSOLEDBSQL 19.4.1.0, SQLNCLI 11.4.x. |
| 2026-04-18 | Добавлен раздел 11 — self-hosted mirror с git + SQL зеркалами. Проверено end-to-end: startup <1 сек, 256 677 строк в локальной БД, weekly sync active. |