Internet
Menú
Gamersmafia es ahora un archivo de solo lectura.

Ayude a un Pipepito a mejorar los servidores de GM

Hola gente!

Tras la Nostalgia Cup que ha sido maravillosa… he visto que lo mismo los servidores no están a la altura de tan amigable gente, así que dentro de lo que mi tiempo me permite, me he propuesto el mejorar esos servidores, ahora estoy un poco atascado y abrumado por la cantidad de resultados que me puede dar una simple búsqueda de google al respecto ahora mismo, así que primero os pongo un poco de contexto:

Hay un varias templates de docker con libcod2, pero todas requieren de usar docker-compose para levantarlas, lo cual, quiero evitar.

Por ahora empezaré con cod2, pero esto se puede extender a cualquier servidor de juegos que tenga imagen en docker (Csgo, ut…), el plan es tener varias instancias cada una en un docker.

Por qué? Bien, cod2 es un juego viejo, como bien sabemos, y los dos servers que tenia corriendo ayer en la misma máquina estaban tirando DEL MISMO PUTO CORE.

Como no quiero tener que estar levantando una VM por cada servidor, mapear puertos a la ip de la VM etc….

El problema:

No quiero usar docker-compose, con lo que necesito encontrar una imagen de libcod2 que lo haga todo, los ficheros Main los puedo poner yo a unas malas, pero lo ideal sería que el docker fuese autosuficiente.

Lo que necesito:

  • Imagen de docker de libcod2 que sea autosuficiente.
  • Aprender a levantar contenedores “bajo demanda” desde scripts que se puedan invocar desde fuera de la consola del servidor.

El plan:

Molaría que el bot para crear partidas del discord levantase un server, pusiera contraseña y rcon y lo enviase por privado al organizador de la partida una vez haya suficiente gente inscrita a esta, esto evitaría tener que cerrar el servidor público de GM (que pudiese haber de juego para partidas privadas de la gente de nuestra comunidad…

Por ahora… creo que está todo.

Cualquier ayuda y dirección para alcanzar esto será muy bien recibida y recompensada en forma de servidor de la comunidad

Que guay esta idea!

Por qué esas imágenes requieren de docker compose? Se levantan varios contenedores al mismo tiempo? Técnicamente con docker compose puedes levantar de 1 a N contenedores. Pero si solo hay un contenedor a levantar, puedes obviar el comando de docker compose y levantarlo con un comando docker normal.

Has probado a buscar con la palabra clave “standalone”?

Comentario #1 por Flash-Hack:
Que guay esta idea!

Por qué esas imágenes requieren de docker compose? Se levantan varios contenedores al mismo tiempo? Técnicamente con docker compose puedes levantar de 1 a N contenedores. Pero si solo hay un contenedor a levantar, puedes obviar el comando de docker compose y levantarlo con un comando docker normal.

Has probado a buscar con la palabra clave “standalone”?

Es lo que estuve pensando, pero la verdad es que ni me fijé bien, lo mismo el compose está levantando una única imagen y estoy yo aquí calentándome la cabeza…

Informativo
#3

Supongo que este es uno de los libcod2 que has encontrado:

https://github.com/bgauduch/call-of-duty-2-docker-server/blob/master/docker-compose.yaml

Pero aunque no tengo experiencia con Docker compose, si entiendo bien lo que estoy leyendo solo está puenteando puertos y mapeando volúmenes, ¿no? Yo para desarrollar GM uso Docker para hacer esas dos cosas sin usar docker compose llamando a docker algo así:

     $ docker run -i \
       --rm \
       --name gm-dev \
       -p80:80 -p443:443 -p5432:5432 \
       -v /Users/slnc/files/juan/gamersmafia/src:/var/www/gamersmafia/current \
       -v /Users/slnc/files/juan/gamersmafia/prod-db/:/var/lib/postgresql \
       gm-dev-ubuntu-22-04:latest

¿Quizás algo así funcione con esa imagen? Insisto: tengo 0 experiencia con docker compose.

Comentario #3 por slnc:
Supongo que este es uno de los libcod2 que has encontrado:

https://github.com/bgauduch/call-of-duty-2-docker-server/blob/master/docker-compose.yaml

Pero aunque no tengo experiencia con Docker compose, si entiendo bien lo que estoy leyendo solo está puenteando puertos y mapeando volúmenes, ¿no? Yo para desarrollar GM uso Docker para hacer esas dos cosas sin usar docker compose llamando a docker algo así:

     $ docker run -i \
       --rm \
       --name gm-dev \
       -p80:80 -p443:443 -p5432:5432 \
       -v /Users/slnc/files/juan/gamersmafia/src:/var/www/gamersmafia/current \
       -v /Users/slnc/files/juan/gamersmafia/prod-db/:/var/lib/postgresql \
       gm-dev-ubuntu-22-04:latest

¿Quizás algo así funcione con esa imagen? Insisto: tengo 0 experiencia con docker compose.

Sí, exacto, ese es uno de los que he encontrado y seguramente pruebe a ver si funciona… voy a intentar lanzarlo a ver

Y no, no vas mal encaminado, más o menos por ahí van los tiros.

Dobleposteo para cagarme en su puta madre, no he conseguido hacer funcionar ese, así que mañana lo intento con este:
https://hub.docker.com/r/lonsofore/cod2

Comentario #5 por Pipepito:
Dobleposteo para cagarme en su puta madre, no he conseguido hacer funcionar ese, así que mañana lo intento con este:
https://hub.docker.com/r/lonsofore/cod2

¿Te acuerdas de qué error te dio ayer? Lo digo por si dos pares de ojos ven más que uno.

🎩 Pipepito
Informativo
#7

Comentario #6 por slnc:
#5 ¿Te acuerdas de qué error te dio ayer? Lo digo por si dos pares de ojos ven más que uno.

no detecta el directorio que le paso al volumen y a Unraid los extra parameters no le han hecho ninguna gracia, por eso tampoco me he ofuscado demasiado, al haber este otro docker al que se le pueden pasar como una variable de entorno… Ya la cosa igual cambia

🎩 Pipepito
Informativo
#8

Me cago en dios, estoy atascado otra vez en prácticamente el mismo sitio ahora…

Y los ficheros .iwd de la instalación del windows están en el directorio…


Los permisos pintan bien? No estoy muy puesto en permisos en linux, la verdad.

docker run
  -d
  --name='Cod2'
  --net='bridge'
  -e TZ="Europe/Paris"
  -e HOST_OS="Unraid"
  -e HOST_HOSTNAME="Rivendell"
  -e HOST_CONTAINERNAME="Cod2"
  -e 'CHECK_PORT'='28960'
  -e 'PARAMS_BEFORE'='+exec server.cfg'
  -e 'COD2_SET_dedicated'='2'
  -e 'COD2_SET_net_port'='28960'
  -e 'COD2_SET_fs_game'='server'
  -e 'COD2_SET_fs_homepath'='/cod2/.callofduty2'
  -l net.unraid.docker.managed=dockerman
  -p '28960:28960/tcp'
  -p '28960:28960/udp'
  -v '/mnt/user/appdata/cod2/server/':'/cod2/.callofduty2/server':'rw'
  -v '/mnt/user/appdata/cod2/main/':'/cod2/main':'rw'
  -v '/mnt/user/appdata/cod2/main/':'/cod2/.callofduty2/main':'rw' 'lonsofore/cod2:latest'
Informativo
#9

Comentario #8 por Pipepito:
Me cago en dios, estoy atascado otra vez en prácticamente el mismo sitio ahora…

Y los ficheros .iwd de la instalación del windows están en el directorio…


Los permisos pintan bien? No estoy muy puesto en permisos en linux, la verdad.

docker run
  -d
  --name='Cod2'
  --net='bridge'
  -e TZ="Europe/Paris"
  -e HOST_OS="Unraid"
  -e HOST_HOSTNAME="Rivendell"
  -e HOST_CONTAINERNAME="Cod2"
  -e 'CHECK_PORT'='28960'
  -e 'PARAMS_BEFORE'='+exec server.cfg'
  -e 'COD2_SET_dedicated'='2'
  -e 'COD2_SET_net_port'='28960'
  -e 'COD2_SET_fs_game'='server'
  -e 'COD2_SET_fs_homepath'='/cod2/.callofduty2'
  -l net.unraid.docker.managed=dockerman
  -p '28960:28960/tcp'
  -p '28960:28960/udp'
  -v '/mnt/user/appdata/cod2/server/':'/cod2/.callofduty2/server':'rw'
  -v '/mnt/user/appdata/cod2/main/':'/cod2/main':'rw'
  -v '/mnt/user/appdata/cod2/main/':'/cod2/.callofduty2/main':'rw' 'lonsofore/cod2:latest'

Primera vez que veo una Smayúscula en permisos.

De izquierda a derecha, la máscara de permisos:

-rwSrwSrw-

Donde, a ver si me acuerdo bien de lo que aprendí en la universidad:

  • El primer carácter solo indica si es fichero (-) o directorio (d).
  • Los siguientes tres caracteres son los permisos de usuario.
  • Los siguientes tres caracteres son los permisos de grupo.
  • Los últimos tres caracteres son los permisos de otros.

Estos grupos de tres caracteres son:

  • El primero: lectura (l) o ninguno (-).
  • El segundo: escritura (w) o ninguno (-).
  • El tercero: ejecución (x) o ninguno (x).

Ante la duda, puedes dar todos los permisos (rwx) a todos los grupos (usuario, grupos y otros) con:

chmod 777 nombre_archivo_directorio

Actualizo, he preguntado a GPT-3 acerca del permiso S y me ha dicho esto:

La letra “S” mayúscula en los permisos de un archivo o directorio indica que se ha establecido el bit SUID (Set User ID) o SGID (Set Group ID) en el archivo o directorio.

El bit SUID se establece en un archivo para permitir que cualquier usuario ejecute el archivo con los mismos permisos del propietario del archivo. Por ejemplo, si un usuario sin permisos de administrador necesita ejecutar un programa que requiere permisos de administrador, el propietario del archivo podría establecer el bit SUID en el archivo para permitir que el usuario lo ejecute con permisos de administrador.

El bit SGID se establece en un directorio para permitir que cualquier archivo creado dentro de ese directorio tenga los mismos permisos del grupo propietario del directorio. Esto es útil en situaciones en las que varios usuarios necesitan trabajar en un conjunto de archivos y compartir los mismos permisos.

La letra “S” mayúscula indica que el bit SUID o SGID está establecido y que el bit ejecutable correspondiente no está establecido. Si el bit ejecutable estuviera establecido, se mostraría la letra “s” minúscula en su lugar.

Es importante tener en cuenta que los bits SUID y SGID pueden ser peligrosos si se usan incorrectamente, ya que pueden permitir que los usuarios ejecuten comandos con permisos elevados. Por lo tanto, se deben usar con precaución y solo en situaciones donde sean realmente necesarios.

Revisando más a fondo veo que te sale un error Couldn't load default_localize_mp.cfg, ¿ese fichero lo tienes por algún lado?

Revisando más a fondo veo que te sale un error Couldn’t load default_localize_mp.cfg, ¿ese fichero lo tienes por algún lado?

Ese fichero no es necesario, en teoría con detectar los ficheros localized_*.iwd debería generarlo…Pero es que no son necesarios incluso…

Mataría ahora mismo por un .zip con todos los ficheros necesarios para el servidor eh

Voy a probar el 777.

Voy a probar el 777.

Mira a ver el 666

Comentario #11 por KpS:

Voy a probar el 777.

Mira a ver el 666

He probado 666 y 777, hay un señor con patas de cabra y una barbita de chivo que se ha sentado aquí conmigo y está mirando la pantalla detenidamente a ver qué me puedo haber dejado…

Porque con 777 tampoco funciona

Comentario #12 por Pipepito:
#11 He probado 666 y 777, hay un señor con patas de cabra y una barbita de chivo que se ha sentado aquí conmigo y está mirando la pantalla detenidamente a ver qué me puedo haber dejado…

Porque con 777 tampoco funciona

Y no te habrá dado un pergamino y dicho algo de no se qué vaca ??

Invoco a @[GOD]Serginho|US que tiene más experiencia que yo con Docker por si tiene alguna idea.

De verdad, me hago vieja

Comentario #15 por Unk:
De verdad, me hago vieja

Pues si yo antes pensaba que sabía un 1% de algo de informática, ahora parece que sé un 0’0000000000001% jajaj ainsss que pena

Los más activos en General