- PVSM.RU - https://www.pvsm.ru -
На Хабрахабре есть отличная статья по i2pd [1]. Единственный недостаток проекта в том, что его авторы предоставляют пакеты только для Ubuntu и Debian, что составляет определённое неудобство для пользователей CentOS.
Владельцу домашнего NAS на CentOS 7 вроде меня остаётся либо собирать i2pd из исходников, либо воспользоваться Docker [2], чтобы установить его поверх образа Debian Jessie.
Итак, статья посвящена созданию контейнера с i2pd в Docker под CentOS 7.
Docker имеет свой репозиторий с актуальными версиями. Чтобы его подключить, создадим в каталоге /etc/yum.repos.d
файл docker.repo
со следующим содержимым:
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
После чего установим нужный нам пакет:
$ sudo yum install docker
$ sudo yum install docker-engine
$ sudo systemctl enable docker.service
$ sudo systemctl start docker
Теперь можно проверить корректность установки:
$ sudo docker run --rm hello-world
И если всё ок, то нам осталось добавить пользователя, который будет баловаться контейнерами, в группу docker:
$ sudo usermod -aG docker cube
Для этого нам потребуется создать файл Dockerfile
со следующим содержимым:
FROM debian:jessie
MAINTAINER Cube <kyb.6.granei@yandex.ru>
# Эти порты нужны для того, чтобы наш контейнер был доступен
# как прокси и у нас был бы доступ на его консоль
EXPOSE 4444 4447 7070 9439
# Обновим образ
RUN apt-get update && apt-get upgrade
# Установим зависимости i2pd
RUN apt-get install -y wget
libboost-date-time1.55.0
libboost-filesystem1.55.0
libboost-program-options1.55.0
libboost-system1.55.0
libminiupnpc10
# Скачаем последнюю версию i2pd и установим пакет
RUN cd /tmp && wget https://github.com/PurpleI2P/i2pd/releases/download/2.9.0/i2pd_2.9.0-1jessie1_amd64.deb
RUN dpkg -i /tmp/i2pd_2.9.0-1jessie1_amd64.deb
RUN rm /tmp/i2pd_2.9.0-1jessie1_amd64.deb
# Делаем пользователя i2pd доступным - назначаем
# ему рабочий shell
RUN usermod -s /bin/bash i2pd
# Копируем конфиг i2pd и файл с подписками
# внутрь контейнера
COPY i2pd.conf /etc/i2pd/i2pd.conf
COPY subscriptions.txt /etc/i2pd/subscriptions.txt
# Определяем точку входа нашего контейнера.
# Эта команда запустится при его запуске
ENTRYPOINT exec su - i2pd -c "/usr/sbin/i2pd --conf ~/i2pd.conf"
Рядом с Dockerfile должны лежать два файла.
log = stdout
daemon = false
service = false
## Port to listen for connections
## By default i2pd picks random port. You MUST pick a random number too,
## don't just uncomment this
port = 9439
## Enable communication through ipv4
ipv4 = true
## Enable communication through ipv6
ipv6 = true
## Bandwidth configuration
## L limit bandwidth to 32Kbs/sec, O - to 256Kbs/sec, P - to 2048Kbs/sec,
## X - unlimited
## Default is X for floodfill, L for regular node
bandwidth = O
## Router will be floodfill
# floodfill = true
[http]
## Uncomment and set to 'false' to disable Web Console
enabled = true
## Address and port service will listen on
address = 0.0.0.0
port = 7070
[httpproxy]
## Uncomment and set to 'false' to disable HTTP Proxy
enabled = true
## Address and port service will listen on
address = 0.0.0.0
port = 4444
## Optional keys file for proxy local destination
# keys = http-proxy-keys.dat
[socksproxy]
## Uncomment and set to 'false' to disable SOCKS Proxy
enabled = true
## Address and port service will listen on
address = 0.0.0.0
port = 4447
http://inr.i2p/export/alive-hosts.txt
http://stats.i2p/cgi-bin/newhosts.txt
http://i2p-projekt.i2p/hosts.txt
http://i2host.i2p/cgi-bin/i2hostetag
http://no.i2p/export/alive-hosts.txt
http://rus.i2p/hosts.txt
http://udhdrtrcetjm5sxzskjyr5ztpeszydbh4dpl3pl4utgqqw2v4jna.b32.i2p/hosts.txt
Теперь запустим команду создания нашего образа. Docker автоматически загрузит и установит нужные слои:
$ docker build -t i2pd .
$ docker run --name=i2pd -td -p 7070:7070 -p 4444:4444 -p 4447:4447 -p 9439:9439 i2pd
Ключ -p
указывает, какие порты открывать наружу, а -td
запускает процесс в фоне, при этом он продолжает писать лог в stdout, что является стандарной практикой при использовании контейнеров и позволяет удобно просматривать его вывод командой:
$ docker logs -t i2pd
После запуска консоль нашего i2pd доступна по порту 7070
, а http- и socks-proxy по портам 4444
и 4447
соответственно.
Для тех, кто не хочет создавать контейнер самостоятельно, я сделал готовый на Docker hub. Устанавливается он одной командой:
$ docker pull hexaedron/i2pd
Запускается он точно так же, как описано выше.
Закончу статью сcылкой на github [3] — там лежит сам Dockefile, парочка скриптов для запуска-остановки и конфиги. Надеюсь, кому-нибудь информация пригодится. Буду рад конструктивной критике.
Автор: Cubus
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/centos/200211
Ссылки в тексте:
[1] отличная статья по i2pd: https://habrahabr.ru/post/275643/
[2] Docker: https://habrahabr.ru/post/310460/
[3] сcылкой на github: https://github.com/hexaedron/i2pd-docker
[4] Источник: https://habrahabr.ru/post/312926/?utm_source=habrahabr&utm_medium=rss&utm_campaign=sandbox
Нажмите здесь для печати.