Net-Base Списание

11.06.2026

Linux-услуги с Delphi: Архитектура, експлоатация и практическо ръководство за предприятия

Как да оперирате стабилно Linux-услуги с Delphi: модел на услугата, systemd, логиране, актуализации, сигурност, достъп до базата данни и конвейер за внедряване – с фокус върху надеждност при експлоатация и поддръжка в корпоративни среди.

11.06.2026

От темата в списанието към проектната практика

Подходящи страници за услуги и технологии към публикацията

Video-Botschaft

Linux-услуги с Delphi: Архитектура, експлоатация и практическо ръководство за предприятия

Kurz erklärt, warum beim Betrieb von Delphi-Services unter Linux nicht der erste Start zählt, sondern systemd-Integration, saubere Trennung von Binary/Konfiguration/Daten, Logging, Updatefähigkeit und Security-Defaults für stabilen Alltag im Unternehmen.

Video mit KI erstellt

Transkript anzeigen

Hallo, kurz und ruhig. Der erste Start ist selten das Problem.

Der Betrieb danach entscheidet. Im Beitrag „Linux-Services mit Delphi betreiben: Architektur, Betrieb und Praxisleitfaden für Unternehmen“ geht es genau darum: Wie sich ein Delphi-Service unter Linux so verhält, dass Admins ihn wie jeden anderen Dienst steuern können.

Im Alltag kippt es oft an drei Punkten: Updates ohne Downtime, Logs, die im Incident wirklich helfen, und Konfiguration, die sauber pro Umgebung getrennt ist. systemd ist dabei der Anker.

Das ist der Linux-Dienstmanager. Er startet, überwacht und begrenzt Prozesse.

Wenn Ihr Dienst dort mit klaren Restart-Regeln, passenden Limits und verständlichen Fehlmeldungen hängt, sinken Risiko und Betriebsaufwand spürbar. Wenn Sie dazu Fragen haben: gern, ich ordne es ein.

Който иска да експлоатира Linux-Services с Delphi, първо мисли за техническата осъществимост: Компилира ли се приложението за Linux? Работи ли стабилно? Това са важни въпроси — но в експлоатацията в предприятието рядко първото стартиране решава успеха, а ежедневната работа след това: ъпдейти без прекъсване на услугата, възпроизводими деплойменти, проследими логове, ясни отговорности, добре дефинирани настройки за сигурност и модел на услуга, който се интегрира в съществуващото Linux управление на експлоатацията.

Delphi в много фирми е резултат от историческо развитие — често като бизнес софтуер, близък до десктоп средата, понякога и като интеграционен или бекенд компонент. Преминаването към Linux-базирани услуги (например за REST-APIs, автоматизация, подготовка на данни или интеграции) често не е „новоизграждане“, а път на модернизация: части от логиката се извеждат от клиента, интерфейсите се стабилизират и експлоатацията се стандартизира по-строго. Именно тук има смисъл да се говори рано за експлоатационните аспекти — не едва преди пускането в експлоатация.

Текстът поставя в контекст как услуга, базирана на Delphi, типично се експлоатира под Linux, кои архитектурни решения опростяват експлоатацията и кои подводни камъни са релевантни на практика — с фокус върху ИТ-руководство, администратори и технически проектни отговорници.

Защо Linux-Services в предприятието — и защо Delphi остава релевантен

Linux е в много центрове за данни и облачни среди стандартът за сървърни натоварвания. Причините включват между другото: единно експлоатационно моделиране (SSH, пакетен мениджмънт, systemd), добре установена автоматизация (Ansible, Terraform среди), ясни компоненти за сигурност (SELinux/AppArmor, systemd-Sandboxing) както и широка поддръжка от екосистеми за мониторинг и логиране.

Delphi не е „необичаен“ в този контекст, а често прагматичен елемент, когато в предприятието вече съществува обширна Delphi-логика. Вместо да се имплементира тази логика наново, тя може да бъде пренесена в услуги или допълнена — например като REST-Server, като фонов процес (Batch/Queue Worker) или като интеграционна услуга между ERP, DMS и други системи.

Важна е перспективата: не Delphi „срещу“ Linux, а Delphi в едно Linux-експлоатационно моделиране. Който планира внимателно, получава добре администриращ компонент, който се държи като „нормална“ Linux услуга.

Delphi под Linux: Laufzeitmodell, Abhängigkeiten, Packaging

От гледна точка на експлоатацията въпросът е по-малко за езика и IDE-то, а за артефактите: Кои файлове се деплойват? Кои системни библиотеки са необходими? Кои конфигурации са нужни по време на изпълнение?

Бинарен файл, конфигурация, данни: ясно разграничение

За един Windows- и Linux-Services е решаващо чистото разделяне на трите области:

  • Binary/Programmdatei: скомпилираният изпълним файл, идеално без „ръчно съставени“ пътеки и без права за запис в директорията за инсталацията.
  • Konfiguration: getrennt vom Binary, z. B. als Datei in /etc/<service>/ oder als Environment-Variablen (Umgebungsvariablen), die systemd verwaltet. Environment-Variablen sind im Betrieb häufig angenehmer, weil sie leichter pro Umgebung (Dev/Test/Prod) variieren.
  • Daten/Runtime: temporäre Dateien, Caches, PID/Socket-Dateien – üblicherweise unter /var/lib, /var/cache oder /run.

Това разделяне не е академично: то позволява неизменяеми разгръщания (бинарният файл е „непроменим“), по-ясни възможности за rollback и по-малко диф-нарушения между сървърите.

Abhängigkeiten und Bibliotheken: lieber bewusst als zufällig

Много проблеми в експлоатацията не възникват от самото приложение, а от отклонения в системните библиотеки. На практика трябва рано да изясните:

  • Кои Linux-Distributionen sind Zielplattform (z. B. Debian/Ubuntu vs. RHEL/Rocky)?
  • Кои версии са одобрени в ИТ-стратегията и как ще се прилагат пачове?
  • Как ще се документират и проверяват нативните зависимости (Build-Pipeline, Smoke-Tests)?

Един устойчив подход е услугите да се изграждат в дефинирана Build-Umgebung и да се привежда Laufzeitumgebung към нея. Алтернативно, опериране в контейнери (z. B. Docker/Podman) може да помогне за стандартизиране на Laufzeit – но тогава трябва ясно да се установи моделът за контейнерни операции (Images, Registry, Security-Scanning, ресурсни лимити).

systemd als Betriebsanker: Service-Unit, RESTart-Strategie, Ressourcen

В съвременните Linux-Umgebungen е systemd стандартният Dienstmanager: той стартира услуги, наблюдава ги, събира логове (чрез journald) и може да налага прости правила за сигурност и ресурси. За ИТ-експлоатацията това е централно, тъй като създава единен модел за управление.

Service-Definition: Starten, Stoppen, Wiederanlauf

Най-важните въпроси, на които една systemd-Unit трябва да отговори:

  • Как се стартира? (Pfad, Parameter, Arbeitsverzeichnis)
  • Кога услугата се счита за „готова“? (z. B. sofort vs. nach erfolgreichem Bind an Port/Socket)
  • Какво се случва при грешки? (RESTart-Policy, Delay, Limits)
  • Под кой потребител работи услугата? (Least Privilege statt root)

Особено стратегията за рестартиране е решаваща на практика. Услуга, която при конфигурационна грешка попада в цикъл на рестартиране, генерира натоварване и поток от логове. Полезни са лимити (z. B. Start-Limit) и ясна обработка на грешки: ако липсва задължителен параметър, услугата трябва да прекрати работата си чисто с разбираемо съобщение – не „наполовина да стартира“.

Ressourcen und Stabilität: Memory, CPU, File-Handles

systemd може да ограничи ресурси (CPU-Anteile, Speichergrenzen, Anzahl offener Dateien). Това не замества добре написан софтуер, но е защита срещу отклонения. Типични точки от експлоатацията:

  • Файлови дескриптори: При много едновременни връзки (HTTP, DB, сокети) лимитите са релевантни.
  • Памет: изтичане на памет или неконтролирани кешове стават видими по-рано, когато лимитите са активни.
  • Таймаути: старт- и стоп-таймаутите трябва да съответстват на миграции на бази данни, фази на затопляне или shutdown-фази.

За администраторите услуга, която се държи в граници, е значително по-лесна за експлоатация от „неконтролиран процес“, който в един момент дестабилизира хоста.

Експлоатиране на Linux-Services с Delphi: типове услуги и типични модели на употреба

Терминът „Service“ се използва в ежедневието по различен начин. В контекста на Linux особено релевантни са три модела, които се различават ясно по експлоатационни изисквания.

1) Дълго работещ REST-сървър

Един REST-сървър (Representational State Transfer, HTTP-базиран интерфейс) често е първата цел: наличната бизнес-логика се експонира чрез API, за да бъдат свързани портали, интеграции или автоматизации. От експлоатационна гледна точка важни са:

  • Привязване към порт и обратен прокси (напр. Nginx/Apache) за TLS, маршрутизиране и евентуално rate-limiting.
  • Health-Checks (Liveness/Readiness): Може ли услугата да приема заявки? Достъпна ли е базата данни?
  • Ограничения на заявки: Защита срещу прекалено големи payload-и и неконтролирано паралелизиране.

Един REST-сървър не просто „работи“, той трябва под натоварване да реагира стабилно, да логва проследимо и при частични смущения (напр. DB временно недостъпна) дефинирано да деградира.

2) Worker/Daemon за фонови задачи

Фоновата обработка често е по-добрата отправна точка от API-сървър: импортиране на файлове, генериране на отчети, съпоставяне на данни, синхронизация на интерфейси. Такива worker-и се отделят лесно, когато се използва опашка (съобщителна опашка), например чрез таблици в базата данни, message broker или файлови spool-ове.

Ключови експлоатационни аспекти:

  • Идемпотентност (повторяемост): Задача при повторно изпълнение не трябва да причинява вреда, напр. дублирани записвания.
  • Dead-Letter/архив за грешки: Неуспешните задачи се поставят отделно и са анализируеми.
  • Backpressure: При натрупване трябва да е ясно как worker-ът ограничава приемането на работа или как се скалира.

3) Таймер-базирани услуги

Периодични задачи (напр. експорт на всеки 5 минути) в контекста на Linux често вече не се решават класически чрез Cron, а чрез systemd-Timer. Предимства: централно управление, чисти логове, зависимости и унифицирано обработване на грешки. За предприятия това е привлекателно, защото Cron-jobs често „растат“ незабележимо и са трудни за одит.

Конфигурация в експлоатация: тайни, среди, версиониране

В корпоративни среди конфигурацията рядко е само „един Ini-Datei“. Тя е въпрос на governance: кой има право да променя? Как се проследяват промените? Как се защитават тайните?

Източници на конфигурация: файл срещу Environment

От експлоатационна гледна точка е обичайна смес:

  • Статични стойности по подразбиране в бинарника (напр. стандартни timeout-и), които рядко се променят.
  • Environment-променливи за параметри специфични за средата (DB-Host, портове, feature flags). systemd може да ги управлява централно.
  • Конфигурационни файлове за структурирани настройки, особено когато няколко стойности логически принадлежат заедно.

Важно е конфигурацията да бъде валидирана: При стартиране услугата трябва да провери всички задължителни стойности и да изведе разбираеми грешки, вместо по-късно да работи в неясно състояние.

Тайни: пароли, токени, сертификати

Тайните не трябва да се съхраняват в Git и не в конфигурации в ясен текст. Практически изпитани опции са:

  • systemd-файлове за среда с рестриктивни файлови права и разделение на отговорности.
  • Хранилища за тайни (напр. подходи с Vault) – в зависимост от вашата инфраструктура.
  • TLS-Zertifikate in einem definierten Zertifikatspfad, mit Rotation und Monitoring auf Ablaufdaten.
  • Wenn ein Delphi-Service externe APIs nutzt, ist Token-Rotation ein echtes Betriebsthema: Der Dienst muss Tokens ohne Neustart oder mit kontrolliertem Neustart übernehmen können.

    Datenbankzugriff und Persistenz: Stabilität vor Komfort

    Viele Delphi-basierte Services sind datengetrieben. Damit rückt der Datenbankzugriff ins Zentrum: nicht in dem Sinne, dass SQL „schön“ ist, sondern dass Verbindungen stabil sind, Timeouts richtig gesetzt werden und Fehlerzustände beherrscht werden.

    FireDAC, PostgreSQL und Co.: Verbindungspooling, Timeouts, Fehlerbilder

    Ob Sie PostgreSQL, MariaDB oder SQL Server anbinden: Im Betrieb zählen vor allem diese Punkte:

    • Connection-Handling: Werden Verbindungen sauber geöffnet/geschlossen? Gibt es ein Pooling-Konzept oder zumindest klare Grenzen für parallele DB-Sessions?
    • Timeouts: Netzwerk-Timeouts, Query-Timeouts, Lock-Wartezeiten – und eine nachvollziehbare Reaktion, wenn ein Timeout greift.
    • Transaktionen: Klare Transaktionsgrenzen, insbesondere bei Worker-Jobs, um halbfertige Datenstände zu vermeiden.
    • Migrationen: Datenbankschema-Änderungen müssen zu Deployments passen (vorwärtskompatibel, Rollback-Strategie).

    Für IT-Verantwortliche ist entscheidend: Ein Service darf die Datenbank nicht „überraschen“. Das heißt: Lastspitzen kontrollieren, Queries beobachten, Indizes pflegen und Fehlerfälle (Locking, Deadlocks, Netzwerkunterbrechung) als Normalfall behandeln.

    Datenhaltung im Service: Caches und temporäre Dateien

    Wenn ein Service mit Dateien arbeitet (Import/Export/PDF/EDI), müssen Ablagen sauber gemanagt werden: definierte Verzeichnisse, Quotas, Aufräumstrategien, und ein Plan für Reprocessing. Temporäre Dateien sollten nicht „irgendwo“ entstehen, sondern im Betriebsmodell vorgesehen sein – inklusive Rechtekonzept.

    Logging, Monitoring und Troubleshooting: ohne Telemetrie kein Betrieb

    In der Praxis scheitern Services selten an „Programmfehlern“, sondern an fehlender Sichtbarkeit. Ein Service, der keine verwertbaren Logs produziert, kostet Betrieb und Fachbereich Zeit – besonders bei sporadischen Fehlern.

    Logging-Strategie: strukturierte Events statt Textromane

    Gute Logs sind:

    • korrelierbar (z. B. Correlation-ID pro Request/Job, damit sich ein Vorgang durch alle Logzeilen verfolgen lässt),
    • strukturiert (Schlüssel/Wert-Informationen, die sich filtern lassen),
    • sparsam (keine sensiblen Daten, keine unnötigen Payloads),
    • betrieblich verwertbar (klare Fehlermeldungen, Exit-Codes, nachvollziehbare Zustände).

    Unter Linux ist das Zusammenspiel mit journald/systemd hilfreich, weil Start/Stop/RESTart und Prozessausgaben zentral zusammenlaufen. Für größere Umgebungen sollte ein Log-Forwarding (z. B. in zentrale Logsysteme) eingeplant werden.

    Monitoring: Metriken, Health-Endpoints, Alarmregeln

    Neben Logs braucht es Metriken. Typische Metriken, die sich im Betrieb bewähren:

    • Anzahl Requests/Jobs pro Zeit
    • Fehlerraten pro Endpoint/Jobtyp
    • Durchlaufzeiten (Latency), getrennt nach externen Abhängigkeiten (DB, Fremd-API)
    • Queue-Länge bzw. Rückstau
    • Ressourcen: Speicher, CPU, offene Verbindungen

    Wichtig ist weniger das Tool, sondern die Disziplin: Alarmregeln müssen zur Betriebsrealität passen. Ein Alarm, der ständig auslöst, wird ignoriert. Ein Alarm, der zu spät auslöst, hilft nicht.

    Сигурност и укрепване: права, мрежа, актуализации

    Ein Windows- und Linux-Services ist ein dauerhaft erreichbarer Prozess – damit ist er Teil der Angriffsfläche. Die gute Nachricht: Linux und systemd bieten viele Mechanismen, um Dienste zu isolieren. Die schlechte Nachricht: Diese Mechanismen wirken nur, wenn sie bewusst genutzt werden.

    Принцип на най-малките привилегии: собствен потребител, минимални права

    Ein Service sollte unter einem eigenen Systembenutzer laufen, mit minimalen Dateirechten. Schreibzugriff nur auf die tatsächlich benötigten Verzeichnisse. Das reduziert Risiken bei Fehlern oder Kompromittierung.

    Мрежови интерфейси: отваряйте само необходимото

    Eine häufige Ursache für Security-Funde ist „zu viel Netzwerk“: Dienste binden an alle Interfaces, Datenbanken sind aus zu vielen Netzen erreichbar, Admin-Endpunkte sind nicht getrennt. Sinnvoll sind klare Regeln:

    • API-Ports nur intern öffnen, extern nur über Reverse Proxy/WAF.
    • Trennung von Public/Private Interfaces, ggf. separate Listener.
    • Outbound-Verbindungen einschränken, wenn möglich.

    Пачване и възможности за актуализация: OS und Anwendung getrennt denken

    Im Betrieb müssen zwei Update-Ströme zusammenspielen: Betriebssystem-Patches und Anwendungsreleases. Planen Sie dafür:

    • Wartungsfenster oder Rolling-Update-Strategie
    • kompatible Konfigurationen (keine „Handarbeit“ pro Server)
    • Rollback-Fähigkeit (vorherige Version lauffähig, Datenbankmigrationen abgestimmt)

    Gerade bei Services, die Geschäftsdaten bewegen, ist ein sauberes Release-Management wichtiger als „schnell deployen“.

    Deployment-Strategien: von „kopieren und hoffen“ zu reproduzierbaren Releases

    Viele gewachsene Delphi-Landschaften kennen den manuellen Deploy: Binary kopieren, Dienst neu starten, fertig. Unter Linux fällt das spätestens dann auf die Füße, wenn mehrere Instanzen, Umgebungen oder Teams beteiligt sind.

    Възпроизводимост: Build-Artefakt und Version müssen zusammenpassen

    Ein betrieblich sauberes Setup hat:

    • Versionierte Artefakte (Binary, Konfigurationsschema, ggf. Migrationsskripte)
    • einen klaren Deploy-Mechanismus (Paket, Artefakt-Repository, Container)
    • Smoke-Tests nach Deploy (Health-Check, einfache API-Requests, DB-Verbindung)

    Das Ziel ist nicht „DevOps als Buzzword“, sondern weniger Ausfälle durch zufällige Unterschiede.

    Rollback und Datenbankmigration: das oft übersehene Paar

    Rollback ist leicht, solange sich nur das Binary ändert. Sobald das Datenbankschema migriert, wird es komplex: Ein altes Binary versteht ggf. neue Tabellen/Spalten nicht. In der Praxis bewähren sich:

    • vorwärtskompatible Migrationen (erst neue Strukturen hinzufügen, später alte entfernen),
    • Feature Flags für neue Logik,
    • geplante Migrationsfenster für harte Schnitte.

    Wenn Sie eine Delphi-Anwendung modernisieren (z. B. von monolithischem Desktop zu Service + Portal), ist dieses Zusammenspiel zentral. Hier entstehen die typischen Projektrisiken – und hier lohnt Architekturdisziplin.

    Migration: Windows-Service nach Linux – wie man Risiken begrenzt

    In vielen Unternehmen existieren bereits Windows-Services, die Daten verarbeiten oder Integrationen übernehmen. Die Migration nach Linux ist dann kein Technologieprojekt, sondern ein Betriebs- und Risikoprojekt.

    Разлики в оперативния модел

    • Управление на услугите: Windows Service Control Manager vs. systemd
    • Логване: Event Log vs. journald/Dateilogs
  • Файлова система и пътища: концепции за пътеки, права, чувствителност към регистъра (Case-Sensitivity)
  • Мрежа и DNS: други стандартни инструменти, други оперативни рутини
  • Тези разлики са управляеми, но трябва да бъдат в чеклистата – в противен случай в експлоатацията се появява „невидима“ допълнителна работа.

    Миграция стъпка по стъпка вместо Big Bang

    Една често практична стратегия:

    1. Декуплиране на сервиса: ясни интерфейси, ясна отговорност за данните, колкото е възможно по-малко директни зависимости на UI.
    2. Въвеждане на наблюдаемост: вече подобряване на Logging/Metriken върху Windows- и Linux-сервисите, за да се създаде по-късно възможност за сравнение.
    3. Паралелен режим: Linux-сервис първоначално в режим на сянка или за част от задачите/заявките.
    4. Превключване: контролиран преход, със план за връщане.

    Така намалявате риска платформена смяна да се сблъска едновременно с промени в процесите.

    Експлоатация на интерфейсите в ежедневието: договори, версиониране, толерантност към грешки

    Услугата обикновено е част от интеграционна верига. Веднага щом участват няколко системи (ERP, DMS, CRM, портали), експлоатацията се превръща в координационна задача. Помагат ясни API-договори и стратегия за версиониране.

    Версиониране: правете промените предвидими

    API-версионирането означава: старите клиенти не трябва внезапно да се счупят. На практика това означава:

    • Да се избягват Breaking Changes или те да се внедряват само чрез нова версия
    • Форматите на отговорите да се разширяват обратно-съвместимо (да се добавят нови полета вместо да се преименуват стари)
    • Процес на депрекация (Abkündigung) с крайни срокове и мониторинг на използването

    Ако оперирате Delphi-базирани REST-ендпойнти, това е една от най-важните оперативни измерения на качеството – защото директно предотвратява откази в съседните системи. (Съдържателно тук лесно може да се навърже към съществуващи вътрешни материали за REST-архитектура, обработка на грешки и версиониране.)

    Култура на грешките: дефинирани отговори вместо „irgendwas ging schief“

    За експлоатацията и бизнес отделите е важно грешките да са еднозначни: HTTP статус кодове, ключове за грешки, проследими логове и разделение между „Client-Fehler“ (грешна заявка) и „Server-Fehler“ (проблем в услугата или в зависимостите).

    Чеклист за отговорните по ИТ: какво трябва да е уредено преди пускане в продукция

    В заключение – кратък чеклист, който се е доказал в проекти, когато Delphi-сервиси стават продуктивни под Linux:

    • Service-Unit: Restart-Policy, Timeouts, Start-Limits, собствен потребител, права върху пътищата към данните
    • Конфигурация: източник, валидиране, разделение по среди, документирани стойности по подразбиране
    • Секрети: място за съхранение, права, ротация, срок на валидност на сертификатите
    • Логване: корелация, структурирани полета, централно агрегиране, защита на данните (без чувствителни payload-и)
    • Мониторинг: Health-Checks, метрики, правила за аларми, табло за експлоатация
    • База данни: Timeouts, транзакции, пул/лимитиране, план за миграции и rollback
    • Деплоймънт: versionierte Artefakte, възпроизводим процес, Smoke-Tests
    • Сигурност: портове, Reverse Proxy/TLS, Hardening, Patch-Prozess
    • Предаване в експлоатация: Runbook (Start/Stop, типични симптоми на грешки, места на логовете), отговорности

    Заключение: Успехът се крие в модела на експлоатация, не в първото пускане

    Експлоатацията на Linux-услуги с Delphi в много корпоративни среди е разумен начин да се предостави натрупана логика като стабилен, лесно интегрируем бекенд компонент. От решаващо значение е услугата да се управлява като Linux-услуга: systemd като контролен център, ясна стратегия за конфигурации и тайни, чисти сигнали за логване и мониторинг, както и деплойменти, които са възпроизводими и позволяват връщане назад.

    Ако желаете да развиете съществуваща Delphi-ландшафт стъпка по стъпка в посока REST-услуги, worker-и и интеграционни компоненти върху Linux, има смисъл от ранен архитектурен и експлоатационен работен семинар: интерфейси, потоци от данни, сигурност и експлоатация се планират съвместно – и не се добавят едва след разработката.

    Ако желаете техническа оценка за вашата среда, най-бързият път е структуриран вход чрез контакт:

    В професионалния контекст Delphi Linux услуга и systemd услуга също играят важна роля, когато интеграции, потоци от данни и по-нататъшно развитие трябва да функционират коректно заедно.

    Обсъдете проект или модернизационно начинание с Net-Base.

    Следваща стъпка

    Когато темата прерасне в реален проект, архитектурата, съществуващото състояние и експлоатацията трябва да бъдат разгледани съвместно още в ранна фаза.

    Подпомагаме не само при отделни въпроси, но и когато от фрагменти от изходен код, проблеми с наследени системи или идеи за портал трябва да бъде реализиран надежден корпоративен проект.

    • Сегашното състояние, целевото състояние и техническите рискове се оценяват съвместно.
    • REST, достъпът до данни, порталите и разгръщането не се отлагат като по-късни последици.
    • Виждате рано кой път е икономически и експлоатационно жизнеспособен.

    Сподели публикацията

    Споделете тази публикация директно

    LinkedIn, X, XING, Facebook, WhatsApp и имейл са незабавно достъпни. За Instagram ще подготвим връзка и кратък текст.

    Електронна поща

    Instagram се отваря в нов раздел. Връзката и краткият текст се копират предварително в клипборда.