GM Cajala 5 #1 Posted August 23, 2011 (edited) Porque um OTServer em linux? Linux é tudo 100% melhor que Windows. Proteção, o Linux tem uma rígida proteção contra acessos indesejados, acessos maliciosos. O Linux tem um mega capacidade de proteção DDoS isso e se você tiver as configurações corretas. No Windows você só pode utilizar mapa com o tamanho máximo 100mb no Linux é ilimitado. No Linux o OTServer tem um desempenho maior com agilidade muito boa. Deixando de bla, bla, vamos ao que interessa. Esse tutorial foi feito baseado no Linux Ubuntu 10.04.4 LTS (Lucid Lynx) 64Bits Downloads necessarios: SSH Secure Shell WinSCP REV 3777 - WINDOWS COM DLL E COMPILADA REV 3777 - LINUX (Esta é uma rev muito utilizada na versão 8.60 e bem recomendada por ser bem estável e sem bugs para linux.) Essa REV eu recomendo você baixar no seu computador, sem extrair e enviar por ftp. Acesse seu Shell SSH veja os passos a seguir: Proxima vez que você for acessa sua maquina por Shell clique em Profile sem ter necessidade de clicar em Quick Connect: (Comandos para copiar e colar no shell [Copia: ctrl+insert] [Colar: shift+insert]). Para visualizar ou enviar sua source por ftp vamos usar o WinSCP acesse ele: Envie sua source SEM EXTRAIR MANDA ZIPADA MESMO via ftp para a pasta HOME... Enviou?..... Vamos atualizar o Ubuntu e instalar as LIBS necessárias: Se aparecer algo bla bla (Y or N?) digita Y e da enter. Espere sempre finalizar um processo para iniciar o outro: apt-get update apt-get install libboost-all-dev apt-get install libgmp3-dev liblua5.1-0 liblua5.1-0-dev liblua50 liblua50-dev liblualib50 liblualib50-dev lua50 lua5.1 libsqlite0-dev libsqlite3-dev sqlite3 libmysql++-dev libmysqlclient-dev mysql-client-5.1 mysql-server-5.1 mysql-common libxml2-dev libxml++2.6-dev cpp gcc g++ make automake autoconf pkg-config subversion liblua5.1-sql-mysql-dev liblua5.1-sql-sqlite3-dev zlib1g-dev zlib1g libcrypto++-dev libcrypto++8 aptitude install libcurl4-openssl-dev Certo fizemos update na maquina e instalamos as libs. Vamos compilar o OTServer. Primeiro acesse a pasta onde se encontra o OTServer: cd /home Extraia a pasta do OTserver: tar -zxvf forgottenserver-trunk.r3777.tar.gz Da permissão pra pasta: chmod 777 -R forgottenserver-trunk.r3777 Acesse a pasta do OTServer: cd /home/forgottenserver-trunk.r3777 Se você quizer que seu OTServer tenha WAR SYSTEM pelo WinSCP localize as pastas home/forgottenserver-trunk.r3777/ Arquivo configure.ac nele na linha 10 terá: OPTIONAL_FLAGS="" Adicione o parametro -D__WAR_SYSTEM__: OPTIONAL_FLAGS="-D__WAR_SYSTEM__" Salva e fecha! Após isso volte para o shell e vamos compilar o OTServer: Execute os comandos: ./autogen.sh ./configure --enable-mysql make Espere sempre finalizar um processo para executar o outro, bom dando tudo correto verifique dentro da pasta do seu OTServer terá um arquivo chamado theforgottenserver se tiver ele la OK meus parabéns você compilou em Linux, vamos para os próximos passos. Jajá vamos abri o server mais antes temos que configurar o config.lua, database, o server. Com a mesma source eu sempre compilo no windows faço tudo em meu computador, faço todos os teste e após está tudo OK eu envio por ftp para minha maquina e faço as atualizações. Normalmente quando você for abrir o server no linux pode da error de sensitive, é quando Arquivo tem nomes com o letras com tamanhos diferenciado tipo A a, exemplo: O servidor no linux procura por um arquivo chamado Record se na pasta script tiver o arquivo com o nome dessa forma record o R minusculo o Linux não vai encontrar o nome tem que ser iguais o que tiver em maiúsculo fica em maiúsculo e minusculo fica em minusculo. A database eu faço da mesma forma do server primeiro configuro no computador exporto e depois envio o arquivo .sql via ftp para maquina la boto o arquivo na pasta home e eu upo via comandos no shell para a database da Linux. Se você não tem phpmyadmin na sua maquina, então vamos instalar logo toda parte de web: Acesse o shell com root: apt-get install apache2 apt-get install php5 apt-get install sendmail Verifique bem na instalação do mysql e phpmyadmin pede uma senha 2x digite sempre a mesma e dando ENTER: apt-get install mysql apt-get install phpmyadmin Movendo a pasta phpmyadmin pra pasta do site: mv /usr/share/phpmyadmin /var/www/phpmyadmin Finalizando: killall -9 apache2 /etc/init.d/apache2 start Pronto verifique se está tudo correto, http://ip.da.maquina/phpmyadmin acesse seu phpmyadmin usando user: root e a senha é a que você botou na instalação do mysql, crie o seu banco de dados e vamos já upa a database.... Via ftp na pasta var/www/ renomeie usando o f2 o nome da pasta phpmyadmin para outro nome, qualquer um, eu particularmente sempre boto outros nomes, não deixo phpmyadmin, exemplo, 65fs98a97ds56aq. Upando a database, usando o shell vamos para a pasta onde se encontra o seu banco de dados, que enviamos via ftp, no caso, a pasta home: cd /home psenha Ae você bota a senha do seu mysql se você não sabe entre em contato com quem você alugou seu dedicado. mysql -u root -psenha No comando abaixo você bota o nome da sua database que criamos agora pouco na web. USE seubancodedados Aqui você bota o nome do arquivo.sql que enviamos por ftp: source arquivo.sql Só esperar finalizar após concluir ok, database upada pode conferir pelo seu navegador de internet como todas as tabelas estarão la do jeito que você configurou no windows. Galera ai o resto vocês já sabem sobre o config.lua,dados da database, senha, ip, rates, feito isso vamos pro site. Via ftp acesse sua pasta htdocs selecione todos os arquivos dentro dela e mande para a pasta var/www, quando concluir apenas altere o a seguinte arquivo, config.ini, em server path, altere, no caso ali o nome da pasta do meu OT é 3777: install = "no" server_path = "/home/3777/" signatures = "0" Usando shell, execute os comandos seguintes: volte ao root cd .. chmod 777 -R var killall -9 apache2 /etc/init.d/apache2 start Se tiver feito até agora tudo certo, o seu site vai estar funcionando perfeitamente. Go go go! Você já testou o server em sua casa, configurou a pasta data utilizando a mesma REV, pronto enviar a pasta via ftp substituindo a pasta que existe la. Feito isso vamos para o shell acesse a pasta do ot: Se quizer renomeia a pasta para outro nome tipo 3777 da forma que ensinei via ftp. cd /home/forgottenserver-trunk.r3777 ./theforgottenserver Se aparecer algo bla bla (Y or N?) digita Y e da enter. Ai vai abri normalmente aparece carregando o server se der algum erro vai dizer pra quem sabe ler vai ser moleza! Abriu o server entrou com seu god testou tudo ok agora feche o server ctrl+c vamos abrir o server oficial pra não cair e poder fechar o shell sem cair o ot. Vamos nós, no shell volte para o root usando: Até voltar ao root: cd .. Vamos adicionar um usuario: adduser tfs No caso ai o nome do usuário que estou adicionando é tfs, pode ser otserver, seu nome, você escolhe, quando você executa o comando vai pedi uma senha bote 123 da enter vai pedi seu nome pais e talz bota nada não só da enter ate finalizar o processo feito isso, OK. Agora baixe esse arquivo em seu computador extraia ele e envia por ftp para a pasta home: TFS.RAR No shell execute: cd /home chmod 777 -R tfs Da mesma forma baixe: TFS.SH Por ftp envie esse arquivo pra dentro da pasta do OTServer e execute o comando: cd /home/forgottenserver-trunk.r3777 chmod 777 -R tfs.sh Feito né? Ok agora vamos abrir o OT pra ele não fechar e quando ele cair por algum erro ele volta sozinho. Em root utilizando o shell execute os comandos: Isso indica que você esta utilizando o usuario tfs: su tfs cd /home/forgottenserver-trunk.r3777 ./theforgottenserver.sh& Ai ele começa a carrega normal e pronto THE END acho que já falei demais kkkkk valeu galera qualquer duvida posta ae acho que esqueci de umas coisas, mais ESTRESSE alto aqui te mais depois edito. Caso queria fechar o server: su tfs cd /home/forgottenserver-trunk.r3777 ps x Vai aparece uma lista de coisas abertas e cada uma com o numero do processo: Pra fechar o server vai ter que mata dois processo, o bash e o tfs, ambos com interrogação do lado veja que tem dois bash killa somente o com a interrogação(?). Sempre primeiro o bash: kill -9 21748 Depois o server: kill -9 21750 Pronto. Evite crash em seu ot por flood:(sempre que reniciar a maquina ou o server cair tem que executa os comandos) iptables -N conn-flood iptables -I INPUT 1 -p tcp --syn -j conn-flood iptables -A conn-flood -m limit --limit 7/s --limit-burst 20 -j RETURN iptables -A conn-flood -j DROP iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 1 -j ACCEPT iptables -A INPUT -p icmp -j DROP Creditos total, 100%, só meu, Natanael Beckman! Edited April 2, 2014 by GM Cajala 2 1 rjsilva89, guinaatz and Bickman reacted to this Share this post Link to post
Zirun 11 #2 Posted August 23, 2011 Tutorial inpecavel com passo a passo e muito bem explicado. Aprovado e movido. Att. Zirun Share this post Link to post
shoeei 3 #4 Posted August 24, 2011 Eu uso sempre ./configure --enable-mysql --enable-server-diag ./build.sh Share this post Link to post
iuniX 4 #5 Posted August 24, 2011 Eu uso sempre./configure --enable-mysql --enable-server-diag ./build.sh Dá quase que na mesma. Eu uso só mysql E uso make no lugar de build.sh 1 rjsilva89 reacted to this Share this post Link to post
Zirun 11 #6 Posted August 25, 2011 Dá quase que na mesma. Eu uso só mysqlE uso make no lugar de build.sh Eu também uso make pois ele fornece uma gama muito maior de opções, e ele busca o arquivo build. Att. Zirun Share this post Link to post
Gorgulf 0 #7 Posted August 26, 2011 cara, n da G_G na hora de dar make fala de algo de que não tem Lua Header G_G Share this post Link to post
iuniX 4 #8 Posted August 26, 2011 cara, n da G_Gna hora de dar make fala de algo de que não tem Lua Header G_G Você baixou todas as libs? Share this post Link to post
Gorgulf 0 #9 Posted August 26, 2011 (edited) Você baixou todas as libs? se no caso essas: apt-get install libboost1.42-dev libboost-system1.42-dev libboost-filesystem1.42-dev libboost-date-time1.42-dev libboost-regex1.42-dev libboost-thread1.42-dev libgmp3-dev liblua5.1-0 liblua5.1-0-dev liblua50 liblua50-dev liblualib50 liblualib50-dev lua50 lua5.1 libsqlite0-dev libsqlite3-dev sqlite3 libmysql++-dev libmysqlclient-dev mysql-client-5.1 mysql-server-5.1 mysql-common libxml2-dev libxml++2.6-dev cpp gcc g++ make automake autoconf pkg-config subversion liblua5.1-sql-mysql-dev liblua5.1-sql-sqlite3-dev zlib1g-dev zlib1g libcrypto++-dev libcrypto++8 sim, baixei, e não dá, dai um amigo me falou pra baixar alguma lib sobre lua sl oq, só que procurei e não achei ;x edit: Não é na hr do make, e sim na hr do ./configure --enable-mysql checking for C++ compiler default output file name... a.outchecking for suffix of executables... checking whether we are cross compiling... configure: error: in `/media/Novo volume/OTServ/trunk.r3777': configure: error: cannot run C++ compiled programs. If you meant to cross compile, use `--host'. See `config.log' for more details Edited August 26, 2011 by Gorgulf Share this post Link to post
GM Cajala 5 #10 Posted August 28, 2011 Executa esse comando e ver se corrigi o error: aptitude install libcurl4-openssl-dev Share this post Link to post
SubythKiller 2 #11 Posted August 28, 2011 Como é foda para iniciantes (como eu em linux) compila um servidor ;s Cara, muito complicado mesmo! Até consegui compila o meu mais não ficou 100% estavel rsrs Share this post Link to post
GM Cajala 5 #12 Posted August 28, 2011 É tem que saber porque não ficou estavel... Qual sem problema cai de minutos em minutos? Relate seu problema talvez eu possa ajuda, na vida nada é simples! Share this post Link to post
kpdonerd 8 #13 Posted August 29, 2011 se seguir passo a passo ae nao tem ,nao e necessario criar outro usuario pra rodar o tfs, e so colocar enabled--root algo assim na hr de compilar que ele vai abrri no root sem fica perguntando, e tem um codigo bem simples que quando cai ele abre, aconselho a executar ele por VNC (conexão remota) e nao por SSH, pois no ssh tu tem q fica conectado ja pelo vnc e asssistencia remota fisica = windows pra windows, e mto facil instalar o pacote e configurar é seguro , se desativa dps q fez o procedimento. se alguem precisar de ajuda eu explico em relação ao codigo que faz abrir o servidor basta ir a pasta dps de compilado como terminal e executar o seguinte comando uma boa regra iptables ve ae a que achar melhor tem um conjunto de regras abaixo . regras avançadas,basicas e medio pra se proteger de ataques comuns a ataques mais sotisficado, vale lembra que dependendo do ataque nao a s.o que contenha ,ai vai depender so seu hardware/banda/uplink. iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH SYN -j DROP iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH FIN -j DROP iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH ACK -j DROP iptables -A INPUT -m conntrack --ctstate INVALID -p tcp --tcp-flags ! SYN,RST,ACK,FIN,URG,PSH SYN,RST,ACK,FIN,URG,PSH -j DROP iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH FIN,URG,PSH -j DROP iptables -A INPUT -p ICMP --icmp-type echo-request -m length --length 60:65535 -j ACCEPT iptables -A INPUT -p UDP -f -j DROP iptables -A INPUT -p TCP --syn -m iplimit --iplimit-above 9 -j DROP iptables -A INPUT -m pkttype --pkt-type broadcast -j DROP iptables -A INPUT -p ICMP --icmp-type echo-request -m pkttype --pkttype broadcast -j DROP iptables -A INPUT -p ICMP --icmp-type echo-request -m limit --limit 3/s -j ACCEPT iptables -A INPUT -p UDP --dport 7 -j DROP iptables -A INPUT -p UDP --dport 19 -j DROP iptables -A INPUT -p UDP --dport 135:139 -j DROP iptables -A INPUT -p TCP --dport 135:139 -j DROP iptables -A INPUT -p tcp --syn -j DROP iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH SYN -j DROP iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH FIN -j DROP iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH ACK -j DROP iptables -A INPUT -m conntrack --ctstate INVALID -p tcp --tcp-flags ! SYN,RST,ACK,FIN,URG,PSH SYN,RST,ACK,FIN,URG,PSH -j DROP iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH FIN,URG,PSH -j DROP iptables -A INPUT -p TCP --syn -m iplimit --iplimit-above 3 -j DROP iptables -A INPUT -p UDP -m pkttype --pkt-type broadcast -j DROP iptables -A INPUT -p UDP -m limit --limit 3/s -j ACCEPT iptables -A INPUT -p ICMP -f -j DROP echo "Block DOS - Ping of Death" iptables -A INPUT -p ICMP --icmp-type echo-request -m length --length 60:65535 -j ACCEPT echo "Block DOS - Teardrop" iptables -A INPUT -p UDP -f -j DROP echo "Block DDOS - SYN-flood" iptables -A INPUT -p TCP --syn -m iplimit --iplimit-above 9 -j DROP echo "Block DDOS - Smurf" iptables -A INPUT -m pkttype --pkt-type broadcast -j DROP iptables -A INPUT -p ICMP --icmp-type echo-request -m pkttype --pkttype broadcast -j DROP iptables -A INPUT -p ICMP --icmp-type echo-request -m limit --limit 3/s -j ACCEPT echo "Block DDOS - UDP-flood (Pepsi)" iptables -A INPUT -p UDP --dport 7 -j DROP iptables -A INPUT -p UDP --dport 19 -j DROP echo "Block DDOS - SMBnuke" iptables -A INPUT -p UDP --dport 135:139 -j DROP iptables -A INPUT -p TCP --dport 135:139 -j DROP echo "Block DDOS - Connection-flood" iptables -A INPUT -p TCP --syn -m iplimit --iplimit-above 3 -j DROP echo "Block DDOS - Fraggle" iptables -A INPUT -p UDP -m pkttype --pkt-type broadcast -j DROP iptables -A INPUT -p UDP -m limit --limit 3/s -j ACCEPT echo "Block DDOS - Jolt" iptables -A INPUT -p ICMP -f -j DROP Para ver o que está configurado: > > # iptables -L > > Para apagar todas as regras: > > # iptables -F iptables -N conn-flood iptables -I INPUT 1 -p tcp --syn -j conn-flood iptables -A conn-flood -m limit --limit 7/s --limit-burst 20 -j RETURN iptables -A conn-flood -j DROP iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 1 -j ACCEPT iptables -A INPUT -p icmp -j DROP iptables -N conn-flood iptables -I INPUT 1 -p tcp --syn -j conn-flood iptables -A conn-flood -m limit --limit 7/s --limit-burst 20 -j RETURN iptables -A conn-flood -j DROP iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 1 -j ACCEPT iptables -A INPUT -p icmp -j DROP # echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all echo 1 > /proc/sys/net/ipv4/tcp_syncookies # echo 3 > /proc/sys/vm/drop_caches # sysctl -w vm.drop_caches=3 iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP iptables -A INPUT -m state --state INVALID -j DROP iptables -A OUTPUT -m state --state INVALID -j DROP iptables -A FORWARD -m state --state INVALID -j DROP for X==/proc/sys/net/ipv4/ for Y==/proc/sys/net/ipv4/conf/ echo 1 > X/icmp_echo_ignore_all echo 1 > X/icmp_echo_ignore_broadcasts echo 1 > X/icmp_ignore_bogus_error_responses echo 1 > Y/all/rp_filter echo 1 > Y/default/rp_filter echo 1 > Y/eth0/rp_filter echo 1 > Y/lo/rp_filter echo "Bloqueando Spoofing" iptables -A INPUT -s 192.168.1.0/24 -i ! eth1 -j DROP iptables -A INPUT ! -s 192.168.1.0/24 -i eth1 -j DROP iptables -A INPUT -s ! 200.170.146.0/24 -i eth0 -j DROP iptables -A INPUT ! -s 200.170.146.0/24 -i eth0 -j DROP iptables -A FORWARD -s ! 200.170.146.0/24 -i eth0 -j DROP iptables -A FORWARD ! -s 200.170.146.0/24 -i eth0 -j DROP Share this post Link to post
GM Cajala 5 #14 Posted August 29, 2011 Muito bom kpdonerd, obrigado pela contribuição! Share this post Link to post
Agramon 2 #15 Posted September 2, 2011 Consegui, mais não ficou muito bom! Obrigado por postar esse tutorial aqui. Share this post Link to post
GM Cajala 5 #16 Posted September 5, 2011 Agramon, diga sua duvida ou o porque não ficou bom! Share this post Link to post
lucasde12 0 #17 Posted September 5, 2011 mostra isso quando eu abro localhost/phpmyadmin [b]Not Found[/b] The requested URL /phpmyadmin/ was not found on this server. Share this post Link to post
GM Cajala 5 #18 Posted September 5, 2011 O que é isso Oo? Você está tentando se conectar da sua casa na database da maquina com localhost? Ou não entendi. =p Share this post Link to post
lucasde12 0 #19 Posted September 5, 2011 Consegui arrumar,obrigado pela atenção. Share this post Link to post
lucasde12 0 #20 Posted September 5, 2011 Deu esse erro quando fui instalar as LIBS Impossível achar pacote libboost1.42-dev Share this post Link to post