Para sorpresa de nadie, desde la compra de Microsoft, GitHub se está convirtiendo en una plataforma antidesarrollador y anticonsumidor. Zig abandonó el barco recientemente por su negligencia con respecto a sus actions runners.
Si usted hostea un proyecto en GitHub, su código será usado para entrenar un LLM, alimentando la industria responsable de que no pueda comprar RAM ni GPUs, eso sin mencionar las consecuencias más asquerosas (te estoy mirando a ti, Grok); no hay manera de evitarlo, a menos que sea lo suficientemente terco como para hacer su propio GitHub.
Forgejo entró al chat
Forgejo es un servicio de hosting de repositorios de Git admnistrado por la ONG alemana Codeberg. Eso es todo lo que necesita saber con respecto al nivel de libertad de este software. A continuación le muestro mi preferencia personal para desplegar Forgejo, esto implica el uso de docker, pues es lo que todo normie (como yo) debería utilizar. Si usted se siente confiado para instalarlo de otra forma:
- Probablemente este artículo no es para usted
- Le dejo el link pertinente a la documentación
Bueno empezamos por el principio
mkdir -p forgejo && cd forgejoAbrimos nuestro docker-compose.yaml
vim docker-compose.yamlY pegamos su contenido. Siga leyendo para una explicación de qué hace cada cosa.
networks:
forgejo:
external: false
services:
server:
image: codeberg.org/forgejo/forgejo:13-rootless
container_name: forgejo
user: 1011:1011
environment:
- USER_UID=1011
- USER_GID=1011
- FORGEJO__database__DB_TYPE=postgres
- FORGEJO__database__HOST=db:5432
- FORGEJO__database__NAME=forgejo
- FORGEJO__database__USER=forgejo
- FORGEJO__database__PASSWD=forgejo
- FORGEJO__repository__ENABLE_PUSH_CREATE_USER=true
- FORGEJO__service__REQUIRE_SIGNIN_VIEW=false
- FORGEJO__service__DISABLE_REGISTRATION=true
restart: always
networks:
- forgejo
volumes:
- ./forgejo:/var/lib/gitea
- ./conf:/etc/gitea
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "2222:2222"
depends_on:
- db
db:
image: postgres:14
restart: always
environment:
- POSTGRES_USER=forgejo
- POSTGRES_PASSWORD=forgejo
- POSTGRES_DB=forgejo
networks:
- forgejo
volumes:
- ./postgres:/var/lib/postgresql/dataEn un sólo párrafo, esto despliega el contenedor de Forgejo, configurado para usar PostgreSQL como base de datos, todo ejecutado por el usuario 1011:1011, por lo que asegúrese de que existe en la máquina host. Se exponen los puertos a la UI y para acceso SSH, 3000 y 2222 respectivamente. Asimismo, modifica tres configuraciones básicas.
...
- FORGEJO__repository__ENABLE_PUSH_CREATE_USER=true
- FORGEJO__service__REQUIRE_SIGNIN_VIEW=false
- FORGEJO__service__DISABLE_REGISTRATION=true
...Después de esto, acceda a la UI a través de la ip de su servidor y el puerto pertinente que haya mapeado (por defecto el 3000), en donde se le presentará la pantalla de configuración inicial de la instancia, con casi todos los cuadros rellenados gracias a las variables de entorno previamente definidas. Solo quedaría crear la cuenta de administrador y sería todo.
Modifique su instalación
Probablemente quiera cambiar alguna de estas configuracions o agregar otras,
para ello refiérase al acordeón
oficial. Note que
estas configuraciones están pensadas para ser moduladas desde un archivo
app.ini, pero aquí lo hacemos desde las variables de entorno del
contenedor. Cada configuración de Forgejo que normalmente iría en app.ini
puede definirse mediante variables de entorno usando el formato:
FORGEJO__SECCION__CLAVE=valor
Para secciones o claves con caracteres especiales, como ., se usan códigos de
escape (_0X2E_). Por ejemplo, [log.console] COLORIZE=false se convierte en
FORGEJO__LOG_0x2E_CONSOLE__COLORIZE=false.
El identificador de cada sección está convenientemente definido en el acordeón, por ejemplo:
Repository (repository)
O, uno más truculento:
Repository - Pull Request (repository.pull-request)
En este caso, su forma en variable de entorno sería
FORGEJO__repository_0X2E_pull_0X2D_request__ENABLE=true
Agregue temas personalizados
Como buen gruvbox enjoyer, tenía que encontrar la manera de agregar temas personalizados a mi instancia. En tal travesía me encontré con este repositorio que incluye una amplia variedad de temas para Gitea (el proyecto del que Forgejo es fork, por lo que son bastante compatibles entre sí). Le dejo el proceso de instalación de todos los temas de dicho repositorio.
Asumiendo que el nombre del contenedor de forgejo es «forgejo»
docker exec -it forgejo sh -c '
mkdir -p /var/lib/gitea/custom/public/assets/css &&
for theme in \
theme-edge-auto.css theme-edge-dark.css theme-edge-light.css \
theme-everforest-auto.css theme-everforest-dark.css theme-everforest-light.css \
theme-gruvbox-auto.css theme-gruvbox-dark.css theme-gruvbox-light.css \
theme-gruvbox-material-auto.css theme-gruvbox-material-dark.css theme-gruvbox-material-light.css \
theme-nord.css theme-palenight.css theme-soft-era.css \
theme-sonokai-andromeda.css theme-sonokai-atlantis.css theme-sonokai-espresso.css \
theme-sonokai-maia.css theme-sonokai-shusia.css theme-sonokai.css; do
curl -L -o /var/lib/gitea/custom/public/assets/css/$theme https://git.sainnhe.dev/sainnhe/gitea-themes/raw/branch/master/dist/$theme
done
'Agregue estas dos variables de entorno a su docker-compose.yaml
- FORGEJO__ui__DEFAULT_THEME=gruvbox-dark
- FORGEJO__ui__THEMES=gruvbox-light,gruvbox-dark,gruvbox-auto,gruvbox-material-light,gruvbox-material-dark,gruvbox-material-auto,edge-light,edge-dark,edge-auto,everforest-light,everforest-dark,everforest-auto,nord,palenight,soft-era,sonokai,sonokai-andromeda,sonokai-atlantis,sonokai-espresso,sonokai-maia,sonokai-shusiaReinicie el contenedor y listo, ahora todos esos temas están disponibles en la configuración de Forgejo. Si su contenedor tarda un poco en arrancar, ¡sea paciente! (pero no tanto, no debería tardar más de un minuto y medio).