FROM alpine:latest MAINTAINER capt LABEL Description="Chat secreto TOR" RUN echo 'root:SuaSenhaDeRootParaOContainer' | chpasswd && \ # # Instalação dos pacotes necessários # apk update && \ apk add --no-cache --purge bash && \ apk add --no-cache --purge tor && \ apk add --no-cache --purge torsocks && \ chown -R root.root /var/lib/tor && \ addgroup eggdrop && \ apk add --no-cache --purge ngircd && \ apk add --no-cache --purge openssh && \ apk add --no-cache --purge irssi && \ chmod 666 /etc/ngircd/ngircd.conf && \ # # # Adiciona um user chamado eggdrop em alusão a um bot da década de 1990, notem que # o Shell foi definido como "ash" e não "bash". O motivo está na linha do sed para # simplificar o script. # # adduser -s /bin/ash -h /home/eggdrop eggdrop -D -G eggdrop && \ echo 'eggdrop:egg' | chpasswd && \ # # Cria as chaves para o daemon sshd # cat /dev/zero | ssh-keygen -t ecdsa -q -N "" && \ cat /dev/zero | ssh-keygen -t dsa -q -N "" && \ cat /dev/zero | ssh-keygen -t rsa -q -N "" && \ cat /dev/zero | ssh-keygen -t ed25519 -q -N "" && \ # # Edita e cria os arquivos para definição das variáveis do Bash # echo "export PS1='\e[1;34m[\e[m\u@\h\e[1;34m]\e[m \w\\$'" >> /etc/profile && \ echo "source /etc/profile" > /root/.bashrc && \ printf "alias la='ls -la --color'\nalias lf='ls -lh -d */'\nalias lh='ls -lah --color'\nalias ls='ls --color'\nalias ll='ls -l --color'\n" >> /etc/profile && \ # # Cria o arquivo de configuração do TorRouter # printf 'SOCKSPort 9050 # Default: Bind to localhost:9050 for local connections.\nExcludeExitNodes {es},{ca},{ua},{us},{rw},{lr},{hk},{mo},{jp},{nz},{gb},{gr},{il},{fr},{ug},{uy},{va},{vi},{ua},{ve},{zw},{py},{pa},{ni},{iq},{br},{cl},{co},{ky},{??}\nExitNodes {bg},{cv},{cu},{li},{lu},{de},{dk},{fi},{is},{mt},{no},{nl},{an},{sk},{ru},{by},{be},{gf},{in},{mc},{me},{st},{sm},{it},{th},{pt},{sc},{mc},{se},{ch},{pt}\nHardwareAccel 1\nKeepalivePeriod 30\nNewCircuitPeriod 40\nGuardLifetime 60\nStrictNodes 1\nLog notice file /var/log/tor/notices.log\nDataDirectory /var/lib/tor\nHiddenServiceDir /var/lib/tor/sshd/\nHiddenServicePort 22220 127.0.0.1:22220\n' > /etc/tor/torrc && \ # # Cria o arquivo de configuração do daemon sshd # printf 'Port 22220\nHostKey /root/.ssh/id_ecdsa\nHostKey /root/.ssh/id_dsa\nHostKey /root/.ssh/id_rsa\nHostKey /root/.ssh/id_ed25519\nSyslogFacility AUTHPRIV\nPermitRootLogin yes\nAuthorizedKeysFile .ssh/authorized_keys2\nPasswordAuthentication yes\nChallengeResponseAuthentication no\nGatewayPorts yes\nX11Forwarding yes\nTCPKeepAlive yes\nPermitTunnel yes\nAcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES\nAcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT\nAcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE\nAcceptEnv XMODIFIERS\nSubsystem sftp /usr/libexec/openssh/sftp-server\n' > /etc/ssh/sshd_config # # Libera portas em seu container que serão usadas pelos serviços que em nosso caso será a porta 22220/tcp para o SSHd # as 9050 e 9150 para o TorRouter # EXPOSE 9050/tcp 9150/tcp 9151/tcp 22220/tcp # # Aqui um shell script captura o IP que o seu container irá adotar e o declara em uma variável # que será usada para editar o arquivo de configuração do daemon ngircd que é o nosso IRC server # RUN SRVADDR=$(ifconfig eth0 | grep inet | cut -f 2 -d":" | cut -f 1 -d" ") && \ sed -i -e 's/192.168.0.1/'${SRVADDR}'/g' /etc/ngircd/ngircd.conf -e 's/;Listen/Listen/g' -e 's/;Ports/Ports/g' -e 's/ash/bash/g' /etc/passwd # # Copia o arquivo docker-entrypoint.sh do mesmo diretório onde se encontrar o Dockerfile para o # diretório /usr/local/bin/ no container ele funcionará como uma espécie de init system. # O parâmetro ENTRYPOINT define que aplicações o seu container irá rodar ao ser iniciado, usar # um shellcript para fazer isso é apenas uma das formas. Eu particularmente acho a mais versátil # e simples. # COPY docker-entrypoint.sh /usr/local/bin ENTRYPOINT ["docker-entrypoint.sh"]