• Как настроить быстрый OpenVPN?

    @ALexhha
    DevOps Engineer
    В свое время использовал такой конфиг для построения тунеля с Hetzner. Насколько помню, на нем получал практически максимум ~90 Мбит, при 100 Мбит канале

    dev tun0
    
    remote 176.xxx.xxx.xxx
    port 1552
    proto udp
    
    script-security 1
    
    sndbuf 0
    rcvbuf 0
    
    txqueuelen 1024
    
    ifconfig 10.0.0.2 10.0.0.1
    
    float
    nobind
    
    secret /etc/openvpn/secret.key
    
    user nobody
    group nobody
    
    comp-lzo
    
    ping 15
    ping-restart 30
    ping-timer-rem
    
    persist-tun
    persist-key
    persist-remote-ip
    
    log /var/log/openvpn.log
    
    verb 3
    Ответ написан
    Комментировать
  • Postfix как ограничить отправку на один email?

    @ALexhha
    DevOps Engineer
    Использовать postfwd, например
    Ответ написан
    Комментировать
  • Почему npm install -g внутри docker ведет себя по разному?

    @ALexhha Автор вопроса
    DevOps Engineer
    Все оказалось проще. Дело таки в самом npm, а точнее как он обрабатывает пути.
    # docker run -it 98605b17ed79 bash -il
    
    root@27b780224672:/# npm -g root
    /usr/lib/node_modules
    
    root@27b780224672:/# /opt/node/bin/npm -g root
    /opt/node/lib/node_modules
    
    root@27b780224672:/# whereis npm
    npm: /usr/bin/npm /usr/bin/X11/npm /opt/node/bin/npm
    
    root@27b780224672:/# ls -lad /usr/bin/npm
    lrwxrwxrwx 1 root root 21 Jul 20 18:56 /usr/bin/npm -> /etc/alternatives/npm
    
    root@27b780224672:/# ls -lad /etc/alternatives/npm
    lrwxrwxrwx 1 root root 17 Jul 20 18:56 /etc/alternatives/npm -> /opt/node/bin/npm


    Поэтому надо учитывать этот нюанс. Как вариант устанавливать модули с --prefix
    # npm install -g --prefix=/node/modules pm2 bower gulp
    Ответ написан
    Комментировать
  • SVN как настроить чтобы не вводить пароль?

    @ALexhha
    DevOps Engineer
    С учетом что svn репозитарий и веб сервер находятся на одном и том же сервере, то можно сделать как то так

    <VirtualHost *:80>
        ServerName www.example.com
        DocumentRoot /vhosts/www.example.com/public_html
    
        DirectoryIndex index.html index.php
    	
        # Закрываем доступ к служебным папкам VCS
        RedirectMatch 404 /\\.(svn|git|hg|bzr|cvs)(/|$)
    
        <Directory /vhosts/www.example.com/public_html>
            Options -Indexes
            AllowOverride All
            Order allow,deny
            Allow from all
        </Directory>
    
    </VirtualHost>


    Производим первоначальную инициализацию
    # cd /vhosts/www.example.com/public_html
    # svn co file:///var/lib/svn/repos/project1/trunk ./
    # chown -R svn:apache /vhosts/www.example.com/public_html
    # chmod -R 770 /vhosts/www.example.com/public_html


    В данном примере svn репозитайрий работает от пользователя svn
    # id svn
    uid=497(svn) gid=48(apache) groups=48(apache),497(svn)


    Создаем простой post commit hook
    # cat /var/lib/svn/repos/project1/hooks/post-commit
    #!/bin/sh
    
    umask 002
    cd /vhosts/www.example.com/public_html && svn up


    После этого, при коммите в репозитарий, данные в папке /vhosts/www.example.com/public_html будут автоматически обновляться.

    Насчет постоянного запроса пароля в TurtoiseSVN, то достаточно настроить аутентификацию по ключам, раз уж используется ssh. Для этого достаточно в putty создать сессию с таким же именем, как и имя сервера

    PFe9WkX.png

    И в секции Auth указать путь к private key, конвертировав ключ с помощью puttygen

    VwxVOz0.png
    Ответ написан
    2 комментария
  • SVN ругается на слишком большой файл при коммите. Используется SCM-Server. Как настроить?

    @ALexhha
    DevOps Engineer
    Добавьте в nginx

    client_max_body_size 128m;
    Ответ написан
    Комментировать
  • Как удалить НЕ пустые директории из удаленного репозитория svn через git-svn?

    @ALexhha
    DevOps Engineer
    А что вам мешает удалить их средствами самого svn? Или я что то упускаю?

    # cd /home/toster/master/
    # svn co http://svn.example.net/repos/toster/ ./
    Checked out revision 0.
    
    # svn add . --force
    A         awk
    A         awk/gettime.awk
    A         awk/join.awk
    ...
    A         authconfig/authconfig.py
    A         aclocal
    A         aclocal/pkg.m4
    
    # svn commit -m 'Initial commit'
    ...
    ...
    ...
    Transmitting file data ................................
    Committed revision 1.
    
    # svn commit -m 'Add some pictures'
    ...
    ...
    ...
    Transmitting file data ................................
    Committed revision 2.
    
    # svn ls http://svn.example.net/repos/toster/
    aclocal/
    anaconda/
    applications/
    augeas/
    authconfig/
    awk/
    firstboot-left.png
    firstboot-small.png
    splash-small.png
    workstation.png
    
    
    # cd /home/toster/slave/
    # svn co http://svn.example.net/repos/toster/ ./
    ...
    Checked out revision 2.
    
    # mkdir xxx
    # dd if=/dev/urandom of=xxx/100mb.bin bs=1M count=100
    # svn add xxx
    A         xxx
    A  (bin)  xxx/100mb.bin
    
    # svn commit -m "My private and secret data"
    Adding         xxx
    Adding  (bin)  xxx/100mb.bin
    Transmitting file data .
    Committed revision 3.
    
    # cd /home/toster/master/
    # svn update
    Updating '.':
    A    xxx
    A    xxx/100mb.bin
    Updated to revision 3.
    
    # ls -la xxx/
    total 102408
    drwxr-xr-x  2 root root      4096 Jan 28 21:03 .
    drwxr-xr-x 10 root root      4096 Jan 28 21:03 ..
    -rw-r--r--  1 root root 104857600 Jan 28 21:03 100mb.bin
    
    
    # cd /home/toster/slave/
    # svn rm xxx/
    D         xxx
    D         xxx/100mb.bin
    
    # svn commit -m "Remove my private and secret data"
    Deleting       xxx
    
    Committed revision 4.
    
    # cd /home/toster/master/
    # svn update
    Updating '.':
    D    xxx
    Updated to revision 4.
    
    # ls -la xxx
    ls: cannot access xxx: No such file or directory
    
    # svn ls http://svn.example.net/repos/toster/
    aclocal/
    anaconda/
    applications/
    augeas/
    authconfig/
    awk/
    firstboot-left.png
    firstboot-small.png
    splash-small.png
    workstation.png


    Единственный минус, эти данные навсегда останутся в репозитарии и будут занимать место. Я как раз для таких случаев (node, bower, gulp) писал svn hook (pre-commit) на сервере, который просто не принимал подобные коммиты.
    Ответ написан
  • SVN и шифрование трафика?

    @ALexhha
    DevOps Engineer
    Я правильно понимаю, что при использовании простого svnserve трафик никак не шифруется (только сжимается)? Логины-пароли также передаются простым текстом?

    Да. Для шифрования можно использовать ssh либо https (при использовании mod_dav_svn)
    Ответ написан
    Комментировать
  • Как организовать безопасный распределённый доступ к файлам?

    @ALexhha
    DevOps Engineer
    https + mod_dav_svn. Авторизация настраивается через специальный файл, с очень простым синтаксисом.

    [groups]
    stat_admin=user3
    report_admin=user4
    
    [Production:/Statistic]
    @stat_admin=rw
    user1=r
    *=
    
    [Production:/Directors]
    user2=rw
    *=
    
    [Production:/Reports]
    @report_admin=rw
    *=


    Так же есть возможность устанавливать права на отдельные файлы, а не только папки. Правда решение к сожалению не лишено недостатков.

    1. Нужно ставить svn клиент. И стоит учитывать что на MacOS нет нормального бесплатного svn клиента.
    2. Если структура папок очень большая и часто возникает необходимость в редактировании прав, то поддержка такой системы будет "не удобной".

    owncloud/seafile, как по мне, для такой задачи перебор. Хотя если брать с перспективой на будущее, то можно посмотреть и в их сторону. Смысл использовать git для этой задачи никакой, будут одни неудобства.
    Ответ написан
    Комментировать
  • Покупка видеокарты через Amazon?

    @ALexhha
    DevOps Engineer
    Крайне не рекомендовал бы связываться с shopfans, просто не адекватный сервис
    Ответ написан
    Комментировать
  • Можно ли настроить svn по протоколу http (nginx без apache)?

    @ALexhha
    DevOps Engineer
    Сейчас хочу отказаться от apache. Возможно ли настроить аналогичным образом доступ к svn с использованием только сервера nginx?

    нельзя, так как в nginx нет полной реализации WEBDAV
    Ответ написан
    Комментировать