Показ дописів із міткою Linux. Показати всі дописи
Показ дописів із міткою Linux. Показати всі дописи

четвер, 5 березня 2026 р.

Крос-платформеність: та сама “дрібниця”, на якій великі компанії щороку залишають купу грошей


 

Уявіть собі офіс на 100 робочих місць. Не стартапчик “на колінці”, а нормальна компанія: бухгалтерія, склад, менеджери, керівники, аналітика, документообіг. І от щодня вона непомітно платить “податок на звичку”: бо так історично склалося — Windows, Office, MS SQL.

Проблема в тому, що цей “податок” не просто існує. Він росте. І найчастіше — без жодної реальної користі для бізнесу.

А тепер давайте на пальцях: що таке крос-платформеність і чому вона може зекономити компанії гроші, нерви й купу часу.


“Крос-платформеність” — це коли ваш бізнес не прив’язаний до однієї кнопки “Пуск”

Коли люди чують “крос-платформене програмування”, часто уявляють щось з області:

“Ну це для програмістів, хай вони там розбираються…”

І це як сказати:

“Електрика в будинку — для електриків. Я просто хочу, щоб світло було.”

Крос-платформеність у бізнесі — це не про “модно”. Це про свободу вибору:

  • хочете Windows — ок;
  • хочете Linux (стабільний, безкоштовний, контрольований) — теж ок;
  • у керівника macOS — будь ласка;
  • у складі старенькі ПК, які на Windows “плачуть” — ставимо Linux, і вони ще поживуть.

Важлива думка: крос-платформеність — це коли софт підлаштовується під бізнес, а не бізнес під софт.


Чому про це мало хто думає (і чому це дорого)

Бо користувачі зазвичай бачать лише поверхню:

  • “У мене є комп — він з Windows.”
  • “У нас Excel — значить все працює.”
  • “SQL Server стоїть — значить так треба.”

А за кадром:

  • ліцензії,
  • оновлення,
  • прив’язка до конкретних версій,
  • “не підтримується на цій ОС”,
  • віруси/шифрувальники,
  • і класика жанру: “Тільки не чіпайте, бо воно якось працює”.

Крос-платформеність — це коли ви перестаєте жити за принципом “аби не зламалось” і переходите в режим “ми керуємо системою”.


Приклад: 100 робочих місць. Де реально ховаються гроші

Не будемо фантазувати “мільйони за день”. Візьмемо консервативний сценарій і чесно підпишемо припущення (бо ціни залежать від типу ліцензій, договорів, знижок і т.д.).

Припущення (приблизно, для розуміння масштабу)

  • Microsoft 365/Office: умовно $10–$15 за користувача/місяць
  • Windows ліцензія/апгрейд: умовно $150–$250 за ПК (разово, якщо не OEM)
  • MS SQL Server: може бути від “боляче” до “дуже боляче” — залежить від ядер/редакції/CAL, і часто вилазить у десятки тисяч доларів навіть для середнього бізнесу

Що виходить на 100 людей

  • Office: $10–$15 × 100 × 12 = $12 000 – $18 000 щороку
  • Windows (разово): $150–$250 × 100 = $15 000 – $25 000
  • MS SQL Server: часто $20 000+ (а інколи й значно більше) — і це ще без “а давайте резервний сервер/тестовий/кластер”

Альтернатива

  • Linux: $0 за ліцензії (і часто менше вимог до заліза)
  • LibreOffice: $0 за ліцензії (так, інколи потрібна адаптація шаблонів — але це разова історія)
  • PostgreSQL: $0 за ліцензії, потужна й перевірена роками база, яку обожнюють інженери й поважають корпорації

І ось тут головне: компанія може вкладати гроші не в “право користуватися”, а в покращення процесів, безпеку, інтеграції, автоматизацію. Тобто — в те, що реально заробляє.


“Але ж у нас програми під Windows…” — саме тому крос-платформений софт змінює гру

Більшість бізнесів сидять на Windows не тому, що це найкраще рішення.
А тому, що критичні програми історично були під Windows.

І тут ми підходимо до практичного питання:

Як перейти на Linux / PostgreSQL і не зупинити роботу?

Відповідь проста: мати систему, яка не вимагає від вас конкретної ОС чи конкретної СУБД.

Саме так працює K2 Cloud ERP:

  • є веб-орієнтовані рішення (де потрібен лише браузер),
  • є мобільні додатки,
  • і є десктопні продукти для Linux, Windows, macOS.

Тобто ваша компанія отримує не “програму під Windows”, а платформу, яка живе там, де вам вигідно.


Безпека: менше вірусів, менше “сюрпризів”, більше контролю

Тут без міфів і фанатизму.

  • Linux на робочих місцях зазвичай означає менше масових вірусів, бо основний удар шкідливого ПЗ традиційно спрямований у Windows-середовище.
  • Linux-інфраструктура часто дає кращий контроль доступів і оновлень.
  • PostgreSQL з правильними налаштуваннями — це серйозна, надійна база, яку можна будувати “по-дорослому”.

Ключове: ви зменшуєте залежність від одного вендора і від одного стеку “бо так склалося”.


А тепер правда, яку не люблять маркетологи: крос-платформеність — це складно. Для розробників.

І от тут починається те, що зазвичай не бачить бізнес, але відчуває кожна команда розробки:

Крос-платформена розробка — це коли треба тестувати:

  • Linux / Windows / macOS
  • різні версії ОС (бо “в бухгалтерії ще Windows 10”, а “в директора Mac на новій”)
  • різне залізо (від “моноблока 2016 року” до ультрабуків)
  • різні драйвери, шрифти, політики безпеки, права доступу, нюанси мережі…

І якщо хтось каже “та там просто один білд” — він або дуже оптимістичний, або давно не збирав реліз під macOS після апдейту.

Ми це реально робимо.
І саме тому наш досвід — практичний, “бойовий”, а не з презентацій. Корпораціям, які хочуть вибудувати нормальний підхід до крос-платформеності (без хаосу і без “ой, воно на Linux не так”), це економить місяці експериментів.


Що отримує компанія в результаті

Якщо коротко, компанія отримує:

  1. Менше витрат на ліцензії (особливо на масштабі 50/100/500 робочих місць).
  2. Свободу вибору ОС: де вигідно — Linux, де треба — Windows, де зручно — macOS.
  3. Незалежність від MS SQL завдяки PostgreSQL.
  4. Кращу керованість і безпеку (особливо в поєднанні з Linux-підходом).
  5. Реальний функціонал, а не компроміс: ERP/CRM/документи/процеси працюють там, де вам треба.

Висновок без пафосу

Крос-платформеність — це не “фішка для айтішників”.
Це спосіб не платити зайве, не бути заручником однієї екосистеми і вибудувати ІТ так, щоб воно служило бізнесу, а не навпаки.

Якщо вам цікаво, як виглядає сценарій для вашої компанії (на вашій кількості робочих місць, з вашими процесами і вашими “болями”) — K2 Cloud ERP якраз про це: веб + мобайл + десктоп під Linux/Windows/macOS, і можливість спокійно жити без прив’язки до Windows та MS SQL, не втрачаючи функціональності.

Хочете — напишіть, скільки у вас робочих місць і що зараз використовується (Office/SQL/1–2 ключові програми), і я складу дуже приземлену калькуляцію економії в 2–3 варіантах: “обережно”, “оптимально”, “максимум свободи”.


https://erp.kyiv.ua/kros-platformenist-ta-sama-dribnyczya-na-yakij-velyki-kompaniyi-shhoroku-zalyshayut-kupu-groshej/

понеділок, 2 березня 2026 р.

K2 Cloud ERP: Десктопний додаток для Linux, Windows та macOS — швидка робота з хмарами без хаосу вкладок


 

Працюєте з K2 Cloud ERP у кількох хмарах або підприємствах холдингу? Тепер це зручно на комп’ютері: представляємо десктопний додаток K2 Cloud ERP для Linux, Windows та macOS. Незалежні вкладки, швидке перемикання між підприємствами, можливість винести вікно для порівняння даних, згортання в трей — і жодної плутанини з браузером.
Звертайтесь — порахуємо перехід з 1С/BAS та Бітрікс на K2 Cloud ERP.
📞 +38 063 108-17-00 • Telegram: @erpk2 • ✉️ rs@corp2.net
Поширюй відео, став лайк та вподобайку 👍❤️



K2CloudERP #ERP #CloudERP #K2ERP #ERPУкраїна #АвтоматизаціяБізнесу #Бухгалтерія #Фінанси #Аналітика #Холдинг #Linux #Windows #MacOS #DesktopApp #ПерехідЗ1С #BAS #Bitrix #Міграція #ЦифроваТрансформація #Облік


https://erp.kyiv.ua/k2-cloud-erp-desktopnyj-dodatok-dlya-linux-windows-ta-macos-shvydka-robota-z-hmaramy-bez-haosu-vkladok/

понеділок, 13 жовтня 2014 р.

Восстановление Flash-накопителя

Столкнулся с проблемой, что после создания загрузочного Flash-накопителя, Windows категорически не хочет удалять разделы и показывает буд-то на Flash несколько мегабайт вместо 2 Гб. Тогда, я обратился к спасительному Linux и решил данную проблему :)

Итак, что я делал.
1. Определил название устройтства Flash-накопителя. Это легко сделать через утилиту Приложения - Системные утилиты - Диски.
У меня, получилось /dev/sdb.

2. Размонтировал все диски из данного устройства.

3. Отформатировал флешку (естественно, под sudo)
  dd if=/dev/zero of=/dev/sdb
Этот процесс длительный. Если у Вас нет времени ждать - можете просто переписать первые 512 байт:
  dd if=/dev/zero of=/dev/sdb bs=512 count=1

4. Создаем раздел с помощью утилиты:
  fdisk /dev/sdb
 Стандартно разбиваем, как это делается утилитой fdisk. Тут расписывать не буду :)

5. Форматирую. Можно с помощью той же дисковой утилиты Приложения - Системные утилиты - Диски.
 

вівторок, 7 жовтня 2014 р.

Настройка шлюза в Linux Ubuntu с помощью iptables

Как я только не настраивал шлюз в Linux Ubuntu и с помощью ufw, squid, с помощью различных программных файерволов. Но, практика показала, что наиболее эффективный способ - это настройка с помощью встроенных средств - с помощью iptables. Самое главное в данной настройке - написание предопределенного скрипта и его использование в различных проектах.



В интернете огромное количество программных реализаций подобных скриптов. Я же использую скрипт, который опишу ниже и который тоже когда-то нашел в интернет :).

Для начала, необходимо отметить, что если необходимо, чтоб работал шлюз внутри сети, то необходимо установить программу для "маскарадинга":
aptitude install dnsmasq

iptables же обычно уже установлен в Linux Ubuntu последних версий, поэтому, его нет необходимости дополнительно устанавливать.

Если же Вам необходимо, чтоб работали одновременно bind9 и dnsmasq, то необходимо вначале запускать dnsmasq, а потом - bind9. Т.к. иначе, они начнут ругаться на занятость портов.
Вот как я делаю в rc.local:

service bind9 stop
service dnsmasq restart
service bind9 start



Теперь, собственно скрипт. В моем случае, данный скрипт работает для шлюза, который висит на одном сетевом интерфейсе - для виртуальных серверов на сервере. В случае же обычной сети - необходимо просто указать сетевой интерефейс внутренней сети.

#!/bin/bash
# Тут в принципе может и не надо этого всего но не помеха
# вдруг какой модуль не подгружен или форвардинг не включен
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

# Объявление переменных
export IPT="iptables"

# Интерфейс который смотрит в интернет
export WAN=eth0

# Локальная сеть (в моем случае, все висит на одном интерфейсе. Чеще всего же тут заменяете на eth1)
export LAN=eth0:1
export LAN_IP_RANGE=10.0.2.0/24

# Очистка всех цепочек iptables
$IPT -F
$IPT -F -t nat
$IPT -F -t mangle
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X

# Закрываем изначально ВСЁ (т.е. изначально все что не разрешено - запрещено):
###$IPT -P INPUT DROP
###$IPT -P OUTPUT DROP
###$IPT -P FORWARD DROP

# разрешаем локальный траффик для loopback и внутренней сети
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -i $LAN -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
$IPT -A OUTPUT -o $LAN -j ACCEPT

# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении.
# Пропускать все уже инициированные соединения, а также дочерние от них
$IPT -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
# Пропускать новые, а так же уже инициированные и их дочерние соединения
$IPT -A OUTPUT -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# Разрешить форвардинг для новых, а так же уже инициированных
# и их дочерних соединений
$IPT -A FORWARD -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# Включаем фрагментацию пакетов. Необходимо из за разных значений MTU
$IPT -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

# Отбрасывать все пакеты, которые не могут быть идентифицированы
# и поэтому не могут иметь определенного статуса.
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -A FORWARD -m state --state INVALID -j DROP

# Приводит к связыванию системных ресурсов, так что реальный
# обмен данными становится не возможным.
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP


# Разрешаем доступ из внутренней сети наружу
$IPT -A FORWARD -i $LAN -o $WAN -j ACCEPT

# Запрещаем доступ снаружи во внутреннюю сеть
$IPT -A FORWARD -i $WAN -o $LAN -j REJECT

# Маскарадинг
$IPT -t nat -A POSTROUTING -o $WAN -s $LAN_IP_RANGE -j MASQUERADE


# Далее дано как пример открытие портов извне:
# **********************************************************************
# Открываем порт для ssh
$IPT -A INPUT -i $WAN -p tcp --dport 22,220 -j ACCEPT

# Открытие портов для торрентов (такие же указать в torrent-клиенте)
# $IPT -A INPUT -i $WAN -p tcp -m multiport --ports 49152:65535 -j ACCEPT

# Открытие 443 порта
$IPT -A INPUT -p tcp --dport 443 -j ACCEPT

# Открываем 80 порт для веб сайтов
$IPT -A INPUT -i $WAN -p tcp --dport 80 -j ACCEPT
$IPT -A INPUT -i $WAN -p udp --dport 80 -j ACCEPT

# Открытие портов для игровых серверов
# $IPT -A INPUT -i $WAN -p tcp --dport 27010:27030 -j ACCEPT
# $IPT -A INPUT -i $WAN -p udp --dport 27010:27030 -j ACCEPT

# Открытие порта для голосового сервера Team Speak
# $IPT -A INPUT -i $WAN -p tcp --dport 9987 -j ACCEPT
# $IPT -A INPUT -i $WAN -p udp --dport 9987 -j ACCEPT
# **********************************************************************
.
# Вывод информации о состоянии таблиц.
route -n
$IPT -L
$IPT -L -v -n
$IPT -L -v -n -t nat



Можно записать данный скрипт, как fw.sh и потом его вызывать из rc.local в момент загрузки. Например, так:
/usr/fw/fw.sh

Настройка 2-х ip-адресов на один сетевой интерфейс в Linux Ubuntu

Бывает, необходимо настроить 2 ip-адреса на одной сетевой карте.
В Linux Ubuntu Вы для задания 2-го ip-адреса Вы можете выполнить команду:
ifconfig eth0:1 10.0.2.1 netmask 255.255.255.0 up

Для того, чтоб настройка воспринялась на  всё время, запишите в файл /etc/network/interfaces нечто подобное:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
# Параметры основного интерфейса, например, ip-адрес внешнего доступа
auto eth0
iface eth0 inet static
      address 95.211.198.19
      netmask 255.255.255.192
      network 95.211.198.0
      broadcast 95.211.198.63
      gateway 95.211.198.62
       # dns-* options are implemented by the resolvconf package, if installed
      dns-nameservers 85.17.150.123 85.17.96.69 85.17.150.123 62.212.64.122
      dns-search ua-hosting.com.ua


auto eth0 eth0:1

iface eth0:1 inet static
address 10.0.2.1
netmask 255.255.255.0

четвер, 28 серпня 2014 р.

Настройка vsftp в Linux Ubuntu 14.04

Настройка ftp:
apt-get update 
apt-get install vsftpd 

Настраиваем конфиг /etc/vsftpd.conf:
write_enable=YES
local_umask=022  


chroot_local_user=YES 

allow_writeable_chroot=YES

pasv_enable=Yes
pasv_max_port=40000
pasv_min_port=40100


service vsftpd restart    

Настройка пользователя:
sudo useradd -m john -s /usr/sbin/nologin
sudo passwd john 

вівторок, 12 серпня 2014 р.

Веб-сервер Nginx и PHP-FPM (настройка мобильного хостинга) - пополняется

Т.к. система должна быть максимально мобильной, поднимаю веб-сервер на базе виртуальной машины. Все программное обеспечение использую с открытым исходным кодом, бесплатное.

Для виртуальной машины вырал virtualbox:
https://www.virtualbox.org/wiki/Downloads

Операционную систему использую Linux Ubuntu:
http://www.ubuntu.com/

После того, как установил Linux Ubuntu в вируальной машине VirtualBox, устанавливаю веб-сервер nginx и PHP-FPM:

apt-get install nginx
 
apt-get install php5-cli php5-common php5-mysql php5-gd php5-fpm php5-cgi \
  php5-fpm php-pear php5-mcrypt
 
Редактируем файл:
/etc/php5/fpm/php.ini

cgi.fix_pathinfo = 0

Редактируем файл:
/etc/php5/fpm/pool.d/www.conf

security.limit_extensions = .php .php3 .php4 .php5
listen = /var/run/php5-fpm.sock 

listen.owner = www-data
listen.group = www-data
listen.mode = 0660

Перезагружаем:
service php5-fpm restart


Для удобства, ставлю некоторые из утилит:

apt-get install mc, htop 
 
Устанавливаю DNS-сервер для настройки ns-сервера и доменных зон:

apt-get install bind9 


mc - это удобный файловый менеджер.
htop - удобное средство для просмотра загрузки процессоров.

apt-get install whois

whois - сервис для получения информации о доменах.

Еще некоторые команды, которые могут понадобиться при настройке доменов. 

dig название домена - определение информации о настройках домена .
nslookup название домена - просмотр ns-серверов домена.

Устанавливаем Apache2

Для сайтов, которым нужен rewrite устанавливаем Apache2:

apt-get install apache2

a2enmod ssl
a2enmod rewrite
a2enmod suexec
a2enmod include

apt-get install libapache2-mod-php5
apt-get install php5-curl

Ставим RPaf
RPaf нужен для определения ip-адреса клиента. 
apt-get install libapache2-mod-rpaf
a2enmod rpaf


Устанавливаем MySQL

apt-get install mysql-server mysql-client mysql-common

Устанавливаем Memcahed

apt-get install memcached php5-memcached

 Настройка рабочего места веб-разрабочика

Для работы с веб-сервером, удобно поставить такое программное-обеспечение:
putty - клиент терминала.
filezilla - файловый менеджер, передающий файлы по ssh.

Данное программное обеспечение - с открытым исходным кодом, бесплатное и кросс-платформенное. Прекрасно зарекомендовало себя при работе с веб-сервером.

Настройка конфигов Nginx

server {
   listen *:80; 

   server_name НАЗВАНИЕ_ДОМЕНА;
   access_log /var/log/nginx/access.log;


   # Перенаправление на back-end
   location / {
   proxy_pass НАЗВАНИЕ_ДОМЕНА:8080/;
   proxy_set_header Host $host;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $remote_addr;
   proxy_connect_timeout 120;
   proxy_send_timeout 120;
   proxy_read_timeout 180;
   }


   # Статическиое наполнение отдает сам nginx
   # back-end этим заниматься не должен
   location ~* \.(jpg|jpeg|gif|png|ico|css|bmp|swf|js|html|txt
|exe|7z|rar|pdf)$ {
   root КОРНЕВОЙ_КАТАЛОГ;
  }
}






Другие полезные утилиты на хостинге


Просмотр объема трафика в терминале:
apt-get install iptraf
Чтоб просмотреть трафик, просто наберите в терминале:  iptraf

Просмотр объема трафика в веб-виде:
apt-get install darkstat

После установки, изменяем конфиг /etc/darkstat/init.cfg
# Turn this to yes when you have configured the options below.
START_DARKSTAT=yes

# Don't forget to read the man page.

# You must set this option, else darkstat may not listen to
# the interface you want
INTERFACE="-i eth0"

#DIR="/var/lib/darkstat"
PORT="-p 666"
#BINDIP="-b 127.0.0.1"
#LOCAL="-l 192.168.0.0/255.255.255.0"

# File will be relative to $DIR:
#DAYLOG="--daylog darkstat.log"

# Don't reverse resolve IPs to host names
#DNS="--no-dns"

#FILTER="not (src net 192.168.0 and dst net 192.168.0)"

# Additional command line Arguments:
# OPTIONS="--syslog --no-macs"


service darkstat start

Чтоб посмотреть трафик просто в браузере наберите:
http://ip-адрес_Вашего_сервера:666

Скільки коштує K2 ERP: онлайн-калькулятор ліцензій, SaaS, хостингу та обслуговування

Скільки коштує впровадження K2 ERP саме для вашого підприємства? У новому онлайн-калькуляторі можна обрати формат роботи — безкоштовну хмару...