Dreamhost y sus famosos one-click instal son el reemplazo perfecto a los scripts fantastico que conocemos en todos los proveedores de hosting. Hace un año Trac no estaba disponible entre sus one-click install y después de hacer un par de hacks y workarrounds logre instalar mi propio sitio con Trac en mi cuenta de Dreamhost, sin embargo es un proceso un tanto doloroso a nivel de dificultad.
Recientemente Dreamhost añadio la posibilidad de instalar Trac con la salvedad que no podemos usar la autenticación de Trac como tal y en su lugar solo podemos vincularlo al archivo .passwd de nuestro repositorio y solo podremos restringir el acceso al sitio y no definir los niveles de autenticación de trac.
Si no saben de que hablo arriba pueden leer otros post 😀
En este tutorial lo que vamos a hacer es lo siguiente
- Añadir soporte a la administración de cuentas con el Account Manager Plugin sobre el archivo .passwd correspondiente al repositorio svn
- Deshabilitar el acceso del usuario anonymous a nuestra instalación de trac
- Crear un usuario «root» para el uso de Trac
Como requisitos tenemos:
- La instalación de subversion tiene que haber sido realizada via one click install
- La instalación de trac tiene que haber sido realizada via one click install
- Conocimientos intermedios de bash y acceso via ssh
Preeliminares
Antes de entrar en materia recordaremos que Apache tiene integrada autenticación basica para restringir acceso a directorios, basta con crear un archivo .htaccess y un almacen de claves en un archivo .passwd para que cada vez que intentemos consultar una pagina dentro de un directorio, Apache no entregue la información sin antes proveer las credenciales correspondientes.
Cuando uno instala Svn y luego instala Trac mediante el one-click install Dreamhost, en teoria deberiamos tener una instalación de este tipo, y al ingresar a la url de Trac, el navegador nos deberia solicitar las mismas credenciales que si lo hicieramos ingresando a la url de nuestro repositorio Svn. Vinculo que en mi caso no funciono :@ y podia ver mi proyecto en Trac sin proveer credenciales.
Además de esto la instalación de Dreamhost crea un usuario anonymous y le da todos los privilegios de lectura sobre nuestro proyecto en Trac, en mi caso necesitaba que solo ciertos usuarios pudieran ver la wiki del proyecto y solo necesitaba un usuario administrador con acceso al explorador de código.
El caso de ejemplo es el siguiente, mi usuario es tuxtor, mi subdominio de proyectos es prueba.shekalug.org, voy a tener instalado Svn en prueba.shekalug.org/svn y tran en prueba.shekalug.org/trac, los directorios importantes seran los siguientes.
Directorio principal ($HOME) = /home/tuxtor
Directorio de binarios ejecutables para mi usuario ($BIN) = /home/tuxtor/packages
Directorio de instalacion de Trac para el dominio ($TRAC)= $HOME/pruebas_shekalug_org_trac_trac
Directorio del proyecto de trac ($PROJ)= $HOME/pruebas.shekalug.org/trac
Directorio de configuraciones de Svn ($SVN) = $HOME/svn
Hasta este punto es buena idea exportar estas variables como variables de entorno para trabajar más comodamente. En una configuracion estandar de Dreamhost, solo la variable $HOME estara disponible y de aqui en adelante solo hare referencia al nombre de las variables de entorno.
Reemplazando el .passwd por el Account Manager Plugin
Como seguramente no funciona el metodo de autenticación del one click install, la mayoria de usuarios de Dreamhost logramos entrar a nuestro proyecto de Trac y vemos el codigo, wiki, administrador de proyecto y al intentar iniciar sesión obtenemos el siguiente resultado:
Internal Error: Authentication information not available. Please refer to the installation documentation.
Basicamente no tenemos el administrador de usuarios instalado en Trac y no entrare en más detalles :D.
Una vez hemos iniciado sesión via secure shell tenemos que generar nuestra propia copia del plugin de administración de cuentas, o en terminologia python nuestro propio egg (modulo) con los siguientes comandos (descarga, genera egg y copia)
1 2 3 4 5 | cd svn checkout http://trac-hacks.org/svn/accountmanagerplugin/0.11 cd 0.11 python setup.py bdist_egg ls dist |
El resultado de estos comandos debe ser el nombre del nuevo egg generado dentro del servidor, similar al siguiente:
TracAccountManager-0.2.1dev_r5836-py2.4.egg
Ahora copiamos el egg hacia nuestro proyecto de trac
1 | cp dist/TracAccountManager-0.2.1dev_r5836-py2.4.egg $PROJ/plugins/ |
Ya que tenemos listo el soporte de account manager, tenemos que enlazarlo a nuestro archivo svn para conservar las mismas credenciales que el respositorio, cuando utilizamos el one-click install todos estos archivos se generan dentro de la carpeta $SVN y el nombre del archivo sera el equivalente al campo ID de proyecto cuando generamos el repositorio.
Por ejemplo si el id de proyecto que se utilizo en la generacion del repositorio fue «chinfunflantortillas» el archivo .passwd correspondiente sera $SVN/chinfunflantortillas.passwd, y con esta información agrego la configuración a mi archivo trac.ini que se encuentra en el directorio $PROJ/conf/trac.ini
[account-manager]
password_file = /home/tuxtor/svn/chinfunflantortillas.passwd
password_store = HtPasswdStore
Además de esto habilito el plugin de account-manager, agregando tambien la siguiente información al archivo trac.ini
[components]
trac.web.auth.LoginModule = disabled
acct_mgr.admin.* = enabled
acct_mgr.api.* = enabled
acct_mgr.db.* = enabled
acct_mgr.htfile.* = enabled
acct_mgr.http.* = enabled
acct_mgr.notification.* = enabled
acct_mgr.pwhash.* = enabled
acct_mgr.svnserve.* = enabled
acct_mgr.web_ui.* = enabled
Eliminando privilegios de usuario anonymous
Una vez tenemos todo listo, tenemos que restringir el acceso a nuestros usuarios, esto lo logramos eliminando los privilegios del usuario anonymous, para eso ejecutamos los siguientes comandos:
1 2 | $BIN/trac-admin $PROJ permission remove anonymous * |
Y listo, el usuario anonymous oficialmente no tiene acceso a ninguna sección de nuestro proyecto, ya es un proyecto privado
Agregando un usuario «root»
El equivalente a un usuario root en Trac, es un usuario con privilegios de TRAC_ADMIN, y con un conjunto de instrucciones similar al anterior, asignamos todos los privilegios al usuario tuxtor:
1 2 | $BIN/trac-admin $PROJ permission add tuxtor TRAC_ADMIN |
Si todo salio bien hasta este paso tendremos la siguiente pantalla de inicio de sesión, totalmente administrada por Trac:
Aunque suene dificil, creo que es más facil que configurar Drupal
Otros links utiles
Guia de administración de permisos de Trac (en ingles): http://trac.edgewall.org/wiki/TracPermissions
Respuesta de Dreamhost al error mencionado en el post: http://discussion.dreamhost.com/archive/index.php/thread-128767.html
Tutorial original y confuso de Dreamhost: http://wiki.dreamhost.com/Troubleshoot_Trac_One-Click_Install
Mozilla/5.0 (X11; Linux x86_64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
hace ratos que no me ponía al tanto con dream host, aunque la comparación con drupal fue buena xD, por cierto yo lo hacía por consola y administración por svn para los usuarios, pero este otro método parece genial 😀
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36
thanks for sharing