<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>P2P &#8211; El Cornijal de Linux</title>
	<atom:link href="https://linuxete.duckdns.org/category/p2p/feed/" rel="self" type="application/rss+xml" />
	<link>https://linuxete.duckdns.org</link>
	<description>Un blog sobre Linux</description>
	<lastBuildDate>Fri, 13 Mar 2026 18:20:08 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>Compilar aMule desde GitHub (Rama Master) en Raspberry Pi</title>
		<link>https://linuxete.duckdns.org/compilar-amule-desde-github-rama-master-en-raspberry-pi/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=compilar-amule-desde-github-rama-master-en-raspberry-pi</link>
					<comments>https://linuxete.duckdns.org/compilar-amule-desde-github-rama-master-en-raspberry-pi/#respond</comments>
		
		<dc:creator><![CDATA[raspberry]]></dc:creator>
		<pubDate>Sat, 14 Feb 2026 21:31:24 +0000</pubDate>
				<category><![CDATA[amule]]></category>
		<category><![CDATA[P2P]]></category>
		<category><![CDATA[amuled]]></category>
		<category><![CDATA[Compilación]]></category>
		<category><![CDATA[Debian 13]]></category>
		<category><![CDATA[Raspberry Pi 5]]></category>
		<category><![CDATA[SSD]]></category>
		<category><![CDATA[Systemd]]></category>
		<category><![CDATA[Tutorial Linux]]></category>
		<guid isPermaLink="false">https://linuxete.duckdns.org/?p=3846</guid>

					<description><![CDATA[«Instalar aMule desde GitHub no solo sirve para tener nuevas funciones, si no, para asegurar que el programa sea totalmente compatible con el hardware y software moderno. Obtenemos un binario que aprovecha los 64 bits de la Raspberry Pi, ya que desde 2021, el código está «congelado». Ramas de desarrollo. A la hora de compilar [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>«Instalar aMule desde GitHub no solo sirve para tener nuevas funciones, si no, para asegurar que el programa sea <strong>totalmente compatible con el hardware y software moderno</strong>. Obtenemos un binario que aprovecha los 64 bits de la Raspberry Pi, ya que desde 2021, el código está «congelado».</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Ramas de desarrollo.</h2>



<p>A la hora de compilar debes saber que existen varias ramas de desarrollo. Para entenderlo fácil, imagina que el desarrollo de un programa en GitHub es como un <strong>árbol</strong> del cual parten distintas ramas, y de nosotros depende elegir la rama que se ajuste a nuestras necesidades.</p>



<p>De las ramas disponibles, la rama <strong><code>master</code></strong> (o a veces llamada <code>main</code>) es la que ocupa nuestra atención, es donde los desarrolladores van subiendo todos los parches modernos para hacerlo compatible con el compilador actual (<code>gcc</code>) y las nuevas librerías (<code>wxWidgets 3.2</code>).</p>



<p>Otras ramas son las <code>Tags</code> y los <code>Branches</code> de desarollo.</p>



<p>En esta tabla a modo de resumen, te muestro los tres tipos de «versiones» disponibles:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><td><strong>Tipo</strong></td><td><strong>Qué es</strong></td><td><strong>¿Cuándo elegirla?</strong></td></tr></thead><tbody><tr><td><strong>Master (Branch)</strong></td><td>El tronco principal. Tiene lo último de lo último.</td><td><strong>Nuestra elección.</strong> Es la más compatible con sistemas modernos.</td></tr><tr><td><strong>Tags (Etiquetas)</strong></td><td>Son «fotos» fijas del código en un momento concreto (ej. v2.3.3).</td><td>Solo si usas un sistema operativo viejo que coincida con la fecha de esa versión.</td></tr><tr><td><strong>Branches de desarrollo</strong></td><td>Ramas paralelas donde se prueban cosas experimentales (ej. <code>fix-webserver</code>).</td><td>Solo si eres desarrollador y quieres probar una función específica que aún no está terminada.</td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>«Usamos la rama <strong>Master</strong> porque es la versión &#8216;viva&#8217; del código. Mientras que las versiones descargables (estables) se quedan congeladas en el tiempo, la rama Master recibe actualizaciones constantes que permiten que aMule se compile sin errores en sistemas de vanguardia como Debian 13.»</em></p>
</blockquote>



<h2 class="wp-block-heading">Desactiva Wayland</h2>



<p>Tu <strong>Raspberry Pi 5</strong> con Debian 13 usa por defecto <strong>Wayland</strong> como servidor gráfico. Sin embargo, <strong>aMule</strong> utiliza la librería <strong>wxWidgets</strong> (wxGTK).</p>



<p>Aunque wxWidgets ha mejorado mucho, su implementación para Wayland todavía tiene problemas graves con los menús contextuales y las barras de herramientas en aplicaciones que no han sido actualizadas internamente. Al forzar <strong>X11</strong>, el sistema utiliza una capa de compatibilidad (XWayland) que dibuja las ventanas de la forma «clásica», permitiendo que los menús aparezcan donde deben.</p>



<h3 class="wp-block-heading">Sigue estos pasos en tu Raspberry Pi OS</h3>



<p>Si usas la imagen oficial de Raspberry Pi, hay una herramienta integrada que gestiona esto sin tocar código:</p>



<ol start="1" class="wp-block-list">
<li>Abre la terminal y escribe: <code>sudo raspi-config</code></li>



<li>Ve a <strong>Advanced Options</strong> (Opciones avanzadas).</li>



<li>Busca la opción <strong>Wayland</strong>.</li>



<li>Selecciona <strong>X11</strong> (o «Disable Wayland»).</li>



<li>Finaliza y <strong>reinicia</strong>.</li>
</ol>



<h2 class="wp-block-heading">1. Limpieza de Instalaciones Previas</h2>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Utiliza este punto, si ya tenías aMule instalado y por ende, un servicio systemd de control. Si no es así, pasa al punto 2.</p>
</blockquote>



<p>Si ya usabas aMule o bien tenías algún servicio de systemd corriendo para su gestion, debemos eliminar todo rastro para evitar conflictos con versiones antiguas de los repositorios.</p>



<p>Comprueba si ya tienes un servicio activo con <code>systemctl list-units --all | grep -i amule</code></p>



<pre class="wp-block-code"><code><strong>systemctl list-units --all | grep -i amule</strong>
  <mark style="background-color:rgba(0, 0, 0, 0);color:#cf2e2e" class="has-inline-color">amule.service</mark><mark style="background-color:rgba(0, 0, 0, 0);color:#7bdcb5" class="has-inline-color"> </mark>                                                                                                                                                                       loaded    active   running   aMule Master Daemon
</code></pre>



<p>Esto arroja que tengo un servicio llamado <code>amule.service</code> y debo detenerlo con este comando:</p>



<pre class="wp-block-code"><code>sudo systemctl stop amule.service</code></pre>



<p>Una vez detenido el servicio, desinstalamos todo lo relacionado con aMule</p>



<pre id="block-2cb1bd22-d0e4-477c-aeb5-ded12e160709" class="wp-block-preformatted">sudo apt purge amule amule-daemon amule-utils-gui amule-utils amule-common</pre>



<p>Y por último eliminamos todos los restos que dependen de la mula.</p>



<pre class="wp-block-code"><code>sudo apt autoremove --purge</code></pre>



<h2 class="wp-block-heading">2. Instalación de Dependencias de Compilación</h2>



<p>Necesitamos el conjunto de herramientas de desarrollo y las librerías necesarias para el GUI remoto y el demonio:</p>



<pre class="wp-block-code"><code>sudo apt update</code></pre>



<p>Instala el compilador y demás librerías. Copia y pega todo ese bloque en la terminal y dale a Enter.</p>



<pre class="wp-block-code"><code>
sudo apt install -y libboost-all-dev git build-essential autoconf automake libtool \
libwxgtk3.2-dev libcryptsetup-dev libcurl4-openssl-dev libgd-dev \
libgeoip-dev libupnp-dev libboost-dev binutils-dev zlib1g-dev \
libcrypto++-dev libreadline-dev gettext autopoint
</code></pre>



<h2 class="wp-block-heading">3. Obtención y Preparación del Código (Master)</h2>



<p>Clonamos directamente la rama de desarrollo para asegurar que los parches estén aplicados:</p>



<p>Nos situamos en el directorio principal con:</p>



<pre class="wp-block-code"><code>cd ~</code></pre>



<p>Descargamos el directorio completo desde GitHub</p>



<pre id="block-cb6aed43-81ff-4077-b91a-d2069335ac15" class="wp-block-preformatted">git clone https://github.com/amule-project/amule.git</pre>



<p>El código anterior nos genera un directorio llamado amule, en el cual nos debemos situar con el comando:</p>



<pre class="wp-block-code"><code> cd amule</code></pre>



<p>Elegimos la rama principal de desarrollo (main)</p>



<pre class="wp-block-code"><code>git checkout master</code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Con <code>git checkout master</code>, le decimos a nuestra Raspberry: <em>«No me des lo que se publicó hace años, dame lo que los desarrolladores tienen en su mesa de trabajo hoy mismo»</em>.</p>
</blockquote>



<p>Preparamos el código fuente antes de la compilacion para permitir al software compilarse específicamente en tu máquina</p>



<pre class="wp-block-code"><code>./autogen.sh</code></pre>



<p>El siguiente comando no es necesario usarlo, sirve para «volver al estado de fábrica» cuando ya has intentado compilar antes y la carpeta se ha llenado de archivos basura (objetos .o, ejecutables a medio hacer, scripts generados por ./autogen.sh). Se debería usar antes de ./autogen.sh para así una vez ejecutado, se vuelvan a crear los nuevos archivos de compilación.</p>



<pre class="wp-block-code"><code>git clean -fxd       # Limpieza total del árbol de archivos</code></pre>



<h2 class="wp-block-heading">4. Configuración del Demonio y Utilidades</h2>



<p>A continuación te presento dos tipos de configuraciones, ya sea para Raspberry Pi 4 o Raspberry Pi 5 y así obtener la configuración del demonio (<code>amuled</code>), la interfaz gráfica remota (<code>amule-gui</code>) y las herramientas de consola:</p>



<p>«El comando <code>./configure</code> es el cerebro del proceso. Se encarga de comprobar que tu Raspberry Pi tiene todas las librerías instaladas y utiliza nuestras instrucciones personalizadas para crear un plan de construcción (Makefile) optimizado para nuestro SSD y procesador.»</p>



<p>Copia esto tal cual y lo pegas en tu terminal.</p>



<p>Para Raspberry Pi 4 (Cortex-A72)</p>



<pre class="wp-block-code"><code>CXXFLAGS="-O3 -march=armv8-a+crc+simd -mtune=cortex-a72" ./configure \
    --enable-amule-daemon \
    --enable-amule-gui \
    --enable-amulecmd \
    --enable-webserver \
    --enable-cas \
    --enable-alcc \
    --disable-monolithic \
    --with-denoise-level=0 \
    --enable-optimize \
    --enable-mmap \
    --disable-debug
    --with-boost
</code></pre>



<p>Para Raspberry Pi 5 (Cortex-A76)</p>



<pre class="wp-block-code"><code>CXXFLAGS="-O3 -march=armv8.2-a+crypto -mtune=cortex-a76" \
./configure \
    --enable-amule-daemon \
    --enable-amule-gui \
    --enable-amulecmd \
    --enable-webserver \
    --enable-cas \
    --enable-alcc \
    --disable-monolithic \
    --with-denoise-level=0 \
    --enable-optimize \
    --enable-mmap \
    --disable-debug \
    --with-boost</code></pre>



<p>Si <code>./configure</code> falla con «Boost not found», prueba:<br><br><code>--with-boost=/usr --with-boost-libdir=/usr/lib/aarch64-linux-gnu --with-boost-includedir=/usr/include</code></p>



<p>Se ha incluido <code>--enable-optimize</code> para que la Raspberry Pi  exprima su procesador y <code>--disable-monolithic</code> para separar el demonio de la interfaz.</p>



<h2 class="wp-block-heading">5. Compilación Potente e Instalación</h2>



<p>Aprovechamos los 4 núcleos de la Pi 4. Al estar en SSD, este proceso es significativamente más rápido:</p>



<pre class="wp-block-code"><code>make -j$(nproc)</code></pre>



<p><code>make -j$(nproc)</code> (La Construcción)</p>



<p>Este es el comando que hace el trabajo pesado.</p>



<ul class="wp-block-list">
<li><strong>¿Qué hace?</strong>: Lee un archivo llamado <code>Makefile</code> (que se generó al ejecutar el <code>./configure</code>) y empieza a llamar al compilador para transformar cada archivo de código <code>.cpp</code> en archivos binarios de lenguaje máquina.</li>



<li><strong>El parámetro <code>--j$(nproc)</code></strong>: Es vital en la Raspberry Pi 4. Le dice al sistema: «<em>Usamos <code>$(nproc)</code> para que el sistema detecte automáticamente los 4 núcleos de la Pi 4 o Pi 5</em> «. Sin el <code>-j$(nproc)</code>, solo usaría uno y la compilación de aMule tardaría 4 veces más.</li>



<li><strong>Resultado</strong>: Al terminar, tendrás el programa «construido» dentro de la carpeta donde estás, pero aún no está instalado en el sistema.</li>
</ul>



<pre class="wp-block-code"><code>sudo make install</code></pre>



<p><code>sudo make install</code> (La Mudanza)</p>



<p>Una vez que el programa está construido, hay que poner cada pieza en su sitio definitivo.</p>



<ul class="wp-block-list">
<li><strong>¿Qué hace?</strong>: Copia los ejecutables (como <code>amuled</code>, <code>amulegui</code>) y los archivos de ayuda/traducciones a las carpetas protegidas del sistema operativo.</li>



<li><strong>¿A dónde van?</strong>: En tu caso, los mueve a <code>/usr/local/bin/</code>.</li>



<li><strong>¿Por qué <code>sudo</code>?</strong>: Porque para escribir archivos en las carpetas del sistema (<code>/usr/local/</code>) necesitas permisos de administrador (SuperUser DO).</li>
</ul>



<pre class="wp-block-code"><code>sudo ldconfig</code></pre>



<p><code>sudo ldconfig</code> (El Registro)</p>



<p>Este es el paso que mucha gente olvida y que causa errores de «librería no encontrada».</p>



<ul class="wp-block-list">
<li><strong>¿Qué hace?</strong>: Actualiza los enlaces y la caché de las librerías compartidas.</li>



<li><strong>¿Por qué es necesario?</strong>: aMule utiliza muchas piezas externas (como <code>wxWidgets</code> o <code>Crypto++</code>). Al instalar versiones nuevas, el sistema necesita «indexarlas» en una base de datos interna (<code>/etc/ld.so.cache</code>).</li>



<li><strong>En resumen</strong>: Le dice al sistema operativo: «¡Oye! Acabamos de instalar programas y librerías nuevas en <code>/usr/local/lib</code>. Asegúrate de que todos los procesos sepan dónde encontrarlas ahora mismo».</li>
</ul>



<h2 class="wp-block-heading">6. Configuración de Acceso y Directorios</h2>



<h3 class="wp-block-heading">A. Primer arranque</h3>



<p>Para que todo funcione, tienes que «despertar» al demonio.</p>



<p>En una terminal escribe:</p>



<pre class="wp-block-code"><code>amuled</code></pre>



<p>Esto creará la carpeta <code>~/.aMule</code>.</p>



<p>Es muy posible que en la primera vez que el programa se ejecute, este se cierre automáticamente, ¡Tranquilo! es totalmente normal. La primera vez que ejecutas aMule, crea la carpeta de configuración, pero se cierra inmediatamente porque <strong>un demonio sin «mando a distancia» no sirve para nada</strong>.</p>



<p>El error te está diciendo literalmente: <em>«Si no puedo conectarme con el exterior, no tengo forma de que me des órdenes»</em>.</p>



<h3 class="wp-block-heading">B. Generar una contraseña segura</h3>



<p>Las contraseñas del archivo <strong>amule.conf</strong> son encriptadas y no se pueden escribir directamente. Por ejemplo para usar la contraseña &lt;<strong>BurritoSabanero</strong>&gt; habrá que encriptarla para que sea válida y se pueda usar.</p>



<p>Primero, genera el código (hash) de tu contraseña. Cambia <code>tu_contraseña_aquí</code> por la que quieras:</p>



<pre class="wp-block-code"><code>echo -n "tu_contraseña_aquí" | md5sum</code></pre>



<p>Por ejemplo:</p>



<pre class="wp-block-code"><code>echo -n "BurritoSabanero" | md5sum</code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>No olvides entrecomillar la palabra elegida como contraseña.</p>
</blockquote>



<p>Esto nos dará como resultado la contraseña encriptada siguiente:</p>



<pre class="wp-block-code"><code>0d545153bf7b94d6094a01f5f925163b  -</code></pre>



<h3 class="wp-block-heading">C. Editar el archivo de configuración</h3>



<p>Ahora vamos a decirle a aMule que acepte conexiones y a ponerle esa contraseña. Abre el editor:</p>



<pre class="wp-block-code"><code>nano ~/.aMule/amule.conf</code></pre>



<p>Busca las líneas que dicen, <strong>ECPassword</strong> y <strong><code>AcceptExternalConnections</code></strong> y déjalas así:</p>



<ul class="wp-block-list">
<li><strong><code>AcceptExternalConnections=1</code></strong> (Cambia el 0 por el 1)</li>



<li><strong><code>ECPassword=la_contraseña_que_generaste</code></strong> (Pega aquí el hash MD5)</li>
</ul>



<h3 class="wp-block-heading">D. Activar la Interfaz Web.</h3>



<p>Como has instalado <code>amule-utils</code>, también tienes <strong><code>amuleweb</code></strong>. Si lo activas, podrás gestionar las descargas escribiendo la IP de tu Raspberry en el navegador de tu móvil o tablet (ej: <code>http://192.168.1.50:24711</code>).</p>



<p>Busca también la sección [WebServer] y cambia lo siguiente.</p>



<ul class="wp-block-list">
<li><strong><code>Enabled=1</code></strong></li>



<li><strong><code>Password=la_contraseña_que_generaste</code></strong> (Puedes usar la misma o generar otra distinta)</li>
</ul>



<h3 class="wp-block-heading">E. Prueba de fuego</h3>



<p>Guarda los cambios con <code>Ctrl+O</code>, pulsa <code>Enter</code> y sal con <code>Ctrl+X</code>.</p>



<p>Ahora vuelve a lanzar el demonio:</p>



<pre class="wp-block-code"><code>amuled -f</code></pre>



<p>Si todo ha ido bien, esta vez <strong>no se cerrará</strong>. Se quedará funcionando.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><strong>Tip de experto:</strong> Como <code>amuled</code> se queda bloqueando la terminal, lo ideal es lanzarlo en segundo plano para que libere la terminal y asi puedas seguir usandola. Esto se logran usando el modificador <code>-f</code> al final del comando.</p>
</blockquote>



<h3 class="wp-block-heading">F.Configuración aMule</h3>



<p>Para modificar la configuración de amuled, asegurate que el demonio no se está ejecutando.</p>



<pre class="wp-block-code"><code>killall amuled</code></pre>



<p>Con el demonio fuera de juego, podemos editar nuestras preferencias en el archivo de configuración de amule.</p>



<pre class="wp-block-code"><code>nano /home/usuario/.aMule/amule.conf</code></pre>



<p>La siguiente configuración es una copia de mi archivo <strong>amule.conf</strong>. Si quieres puedes usarlo copiarlo y adaptarlo a tus necesidades. Yo he modificado las líneas que están resaltadas en verde con respecto al archivo original.</p>



<pre class="wp-block-code"><code>&#91;eMule]
AppVersion=2.3.3
<mark>Nick=Usuario_de_aMule</mark>
QueueSizePref=50
<mark>MaxUpload=5000</mark>
<mark>MaxDownload=19375</mark>
<mark>SlotAllocation=20</mark>
<mark>Port=24662</mark>
<mark>UDPPort=24672</mark>
UDPEnable=1
Address=
Autoconnect=1
<mark>MaxSourcesPerFile=300</mark>
MaxConnections=300
MaxConnectionsPerFiveSeconds=20
RemoveDeadServer=1
DeadServerRetry=3
ServerKeepAliveTimeout=0
Reconnect=1
Scoresystem=1
Serverlist=1
AddServerListFromServer=0
AddServerListFromClient=0
SafeServerConnect=0
AutoConnectStaticOnly=0
UPnPEnabled=0
UPnPTCPPort=50000
SmartIdCheck=1
ConnectToKad=1
ConnectToED2K=1
TempDir=/home/<mark>tu_usuario</mark>/.aMule/Temp
IncomingDir=/home/<mark>tu_usuario</mark>/.aMule/Incoming
ICH=1
AICHTrust=0
CheckDiskspace=1
MinFreeDiskSpace=1
AddNewFilesPaused=0
PreviewPrio=0
ManualHighPrio=0
StartNextFile=0
StartNextFileSameCat=0
StartNextFileAlpha=0
FileBufferSizePref=100
DAPPref=1
UAPPref=1
AllocateFullFile=0
OSDirectory=/home/tu_usuario/.aMule/
OnlineSignature=0
OnlineSignatureUpdate=5
EnableTrayIcon=0
MinToTray=0
Notifications=0
ConfirmExit=1
StartupMinimized=0
3DDepth=10
ToolTipDelay=1
ShowOverhead=0
ShowInfoOnCatTabs=1
VerticalToolbar=0
<mark>GeoIPEnabled=0</mark>
ShowVersionOnTitle=0
VideoPlayer=
StatGraphsInterval=3
statsInterval=30
DownloadCapacity=300
UploadCapacity=100
StatsAverageMinutes=5
VariousStatisticsMaxValue=100
SeeShare=2
FilterLanIPs=1
ParanoidFiltering=1
IPFilterAutoLoad=1
<mark>IPFilterURL=http://upd.emule-security.org/ipfilter.zip</mark>
FilterLevel=127
IPFilterSystem=0
FilterMessages=1
FilterAllMessages=0
MessagesFromFriendsOnly=0
MessageFromValidSourcesOnly=1
FilterWordMessages=0
MessageFilter=
ShowMessagesInLog=1
FilterComments=0
CommentFilter=
ShareHiddenFiles=1
AutoSortDownloads=0
NewVersionCheck=0
AdvancedSpamFilter=1
MessageUseCaptchas=1
Language=
SplitterbarPosition=75
YourHostname=
DateTimeFormat=%A, %x, %X
AllcatType=0
ShowAllNotCats=0
SmartIdState=1
DropSlowSources=0
<mark>KadNodesUrl=http://upd.emule-security.org/nodes.dat</mark>
<mark>Ed2kServersUrl=http://emule-security.org/serverlist/server.met</mark>
ShowRatesOnTitle=0
GeoLiteCountryUpdateUrl=http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
StatsServerName=Shorty's ED2K stats
StatsServerURL=http://ed2k.shortypower.dyndns.org/?hash=
CreateSparseFiles=1
&#91;Browser]
OpenPageInTab=1
CustomBrowserString=
&#91;Proxy]
ProxyEnableProxy=0
ProxyType=0
ProxyName=
ProxyPort=1080
ProxyEnablePassword=0
ProxyUser=
ProxyPassword=
&#91;ExternalConnect]
UseSrcSeeds=0
<mark>AcceptExternalConnections=1</mark>
ECAddress=
ECPort=4712
<mark>ECPassword=0d545153bf7b94d6094a01f5f925163b</mark>
UPnPECEnabled=0
ShowProgressBar=1
ShowPercent=1
UseSecIdent=1
IpFilterClients=1
IpFilterServers=1
TransmitOnlyUploadingClients=0
&#91;WebServer]
Enabled=1
<mark>Password=0d545153bf7b94d6094a01f5f925163b</mark>
PasswordLow=
<mark>Port=24711</mark>
WebUPnPTCPPort=50001
UPnPWebServerEnabled=0
UseGzip=1
UseLowRightsUser=0
PageRefreshTime=120
Template=default
Path=amuleweb
&#91;GUI]
HideOnClose=0
&#91;Razor_Preferences]
FastED2KLinksHandler=1
&#91;SkinGUIOptions]
Skin=
&#91;Statistics]
MaxClientVersions=0
&#91;Obfuscation]
IsClientCryptLayerSupported=1
IsCryptLayerRequested=1
IsClientCryptLayerRequired=0
CryptoPaddingLenght=254
CryptoKadUDPKey=1686729473
&#91;PowerManagement]
PreventSleepWhileDownloading=0
&#91;UserEvents]
&#91;UserEvents/DownloadCompleted]
CoreEnabled=0
CoreCommand=
GUIEnabled=0
GUICommand=
&#91;UserEvents/NewChatSession]
CoreEnabled=0
CoreCommand=
GUIEnabled=0
GUICommand=
&#91;UserEvents/OutOfDiskSpace]
CoreEnabled=0
CoreCommand=
GUIEnabled=0
GUICommand=
&#91;UserEvents/ErrorOnCompletion]
CoreEnabled=0
CoreCommand=
GUIEnabled=0
GUICommand=
&#91;HTTPDownload]
URL_1=http://upd.emule-security.org/ipfilter.zip
URL_2=http://emule-security.org/serverlist/server.met
URL_5=http://upd.emule-security.org/nodes.dat
URL_3=http://emule-security.org/serverlist/server.met

</code></pre>



<p>Descripción de los puntos más importantes de la configuración de aMule.</p>



<h4 class="wp-block-heading">Parámetros Críticos de Configuración (<code>amule.conf</code>)</h4>



<ul class="wp-block-list">
<li><strong><code>Nick</code></strong>: Es tu nombre de usuario en la red. Aunque no afecta a la velocidad, sirve para identificarte en las colas de otros usuarios.</li>



<li><strong><code>MaxDownload=19375</code></strong>: Define el límite máximo de descarga (en este caso, unos 150 Mbps). Permite que aMule use el ancho de banda necesario sin saturar la CPU de la Raspberry.</li>



<li><strong><code>MaxUpload=5000</code></strong>: Define la velocidad de subida. Es vital ser generoso (5 MB/s); en la red eD2k, cuanto más subes, más créditos ganas y más rápido descargas de los demás.</li>



<li>Slot Allocation=20 : determina <strong>cuánta velocidad de subida le das a cada persona</strong> que se descarga algo de ti. Con 5000 de subida total, estás abriendo <strong>250 slots simultáneos</strong>. Vas a ganar créditos con 250 personas a la vez, lo que te garantiza descargar a máxima velocidad en tiempo récord.</li>



<li><strong><code>Port=24662</code> (TCP)</strong>: Es el puerto que usa el programa para recibir datos. Debe estar abierto en tu router hacia la IP de la Raspberry para evitar la «ID Baja».</li>



<li><strong><code>UDPPort=24672</code> (UDP)</strong>: Puerto para la red Kad y búsquedas. También debe estar abierto en el router para que la red funcione al 100%.</li>



<li><strong><code>MaxSourcesPerFile=300</code></strong>: El número máximo de fuentes que el programa buscará por cada archivo. Un valor de 300 es el punto de equilibrio ideal para la Raspberry Pi 4.</li>



<li><strong><code>MaxConnections=300</code></strong>: Límite de conexiones totales simultáneas. Mantenerlo en 300 evita que la Raspberry se bloquee por exceso de hilos de red abiertos. Si se sube mucho (ej. 500 o más), la Pi suele dar errores de red (<code>epoll</code>).</li>



<li><strong><code>MaxConnectionsPerFiveSeconds=20</code></strong>: Controla cuántas conexiones nuevas se intentan cada 5 segundos. Un valor bajo (20) evita que el router colapse al arrancar el programa.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h4 class="wp-block-heading">Mantenimiento y Rendimiento del Sistema</h4>



<ul class="wp-block-list">
<li><strong><code>FileBufferSizePref=100</code></strong>: Define el tamaño del búfer en RAM antes de escribir en el disco. Un valor alto (100% o más) reduce el número de escrituras constantes, protegiendo la salud de la tarjeta MicroSD.</li>



<li><strong><code>AllocateFullFile=0</code></strong>: Si está en <code>1</code>, reserva todo el espacio del archivo al empezar. En la Raspberry es mejor dejarlo en <code>0</code> para que no se congele el sistema al intentar crear archivos muy grandes de golpe.</li>



<li><strong><code>SmartIdState=1</code></strong>: Ayuda a recuperar la ID Alta (flechas verdes) si sufres un micro-corte de internet, siempre que los puertos del router estén bien configurados.</li>



<li><strong><code>Serverlist=1</code></strong>: Indica al programa que actualice la lista de servidores conocidos cada vez que se inicia.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h4 class="wp-block-heading">Rutas y Seguridad</h4>



<ul class="wp-block-list">
<li><strong><code>IncomingDir</code> y <code>TempDir</code></strong>: Son las carpetas donde se guardan las descargas finalizadas y los archivos temporales. En una Raspberry, si puedes usar un SSD o disco externo, cambia estas rutas para evitar desgastar la tarjeta SD.</li>



<li><strong><code>IPFilterURL</code></strong>: La dirección para descargar el filtro de IPs (ej: <code>http://upd.emule-security.org/ipfilter.zip</code>). Es fundamental para bloquear servidores falsos y clientes espía automáticamente.</li>



<li><strong><code>Ed2kServersUrl</code></strong>: Dirección para descargar una lista de servidores fiables (ej: <code>http://upd.emule-security.org/server.met</code>). Garantiza que siempre conectes a servidores reales y seguros.</li>
</ul>



<p></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">7. El paso final: ¿Quieres que aMule arranque solo?</h2>



<p>Para que tu Raspberry Pi sea un servidor de descargas profesional, lo ideal es crear un servicio en <code>systemd</code>. Esto hará que <code>amuled</code> se inicie automáticamente cada vez que enciendas la Pi sin necesidad de abrir una terminal.</p>



<p>En tu terminal homologada ejecuta este comando:</p>



<p>Copia y pega el contenido a tu archivo, no olvides sustituir «tu_usuario» y «tu_grupo» por los tuyos propios. </p>



<pre class="wp-block-code"><code>&#91;Unit]
Description=aMule Master Daemon
After=network.target

&#91;Service]
User=<mark style="background-color:#7bdcb5" class="has-inline-color">tu_usuario</mark>
Group=<mark style="background-color:#7bdcb5" class="has-inline-color">tu_grupo</mark>
# Usamos 'simple' porque amuled en rama master gestiona muy bien la salida a consola
Type=simple 
ExecStart=/usr/local/bin/amuled
Restart=always
RestartSec=5

&#91;Install]
WantedBy=multi-user.target</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>Guarda con Crtl + o  y sal con Crtl + x </p>



<p>Ahora sigue estos pasos para que el sistema reconozca la nueva configuración sin errores:</p>



<ol start="1" class="wp-block-list">
<li><strong>Recarga la configuración</strong>: <br><code>sudo systemctl daemon-reload</code> <br>(Esto es vital cada vez que editas un archivo <code>.service</code>).</li>



<li><strong>Activa el servicio con:</strong><br><code>sudo systemctl enable amule.service</code></li>



<li><strong>Inicia el servicio:</strong><br><code>sudo systemctl start amule.service</code></li>



<li><strong>Comprueba que vive</strong>:<br><code>sudo systemctl status amule.service</code></li>
</ol>



<ul class="wp-block-list">
<li>Sólo en caso de fallo, si nesitas revivir o reiniciar el servicio puedes usar el comando:<br><code>sudo systemctl restart amule.service</code></li>
</ul>



<p>«Al compilar nosotros mismos, el sistema no sabe cómo arrancar el programa automáticamente. Creamos este archivo en <code>/etc/systemd/system/</code> para que la Raspberry Pi sepa que el &#8216;cerebro&#8217; de las descargas debe estar siempre vivo, incluso si hay un corte de luz y el SSD se reinicia.»</p>



<h2 class="wp-block-heading"><strong>Notas y advertencias</strong></h2>



<ul class="wp-block-list">
<li>Con &#8211;with-boost se usa Boost.Asio para networking → evita bugs de wxNet/epoll en ARM/Pi 5.</li>



<li>Si usas conexiones altas (&gt;300), el bug epoll puede volver; baja a 200-300 como workaround.</li>



<li>Como asunto relevantes: <a href="https://github.com/amule-project/amule/issues/171" target="_blank" rel="noreferrer noopener">https://github.com/amule-project/amule/issues/171</a> (donde recomiendan &#8211;with-boost explícitamente).</li>
</ul>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://linuxete.duckdns.org/compilar-amule-desde-github-rama-master-en-raspberry-pi/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Inicia transmission-daemon con systemd en Debian 12</title>
		<link>https://linuxete.duckdns.org/como-iniciar-transmission-daemon-con-systemd/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=como-iniciar-transmission-daemon-con-systemd</link>
					<comments>https://linuxete.duckdns.org/como-iniciar-transmission-daemon-con-systemd/#respond</comments>
		
		<dc:creator><![CDATA[raspberry]]></dc:creator>
		<pubDate>Mon, 01 Sep 2025 15:49:43 +0000</pubDate>
				<category><![CDATA[bittorrent]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[P2P]]></category>
		<category><![CDATA[transmission]]></category>
		<category><![CDATA[transmission-daemon]]></category>
		<guid isPermaLink="false">https://linuxete.duckdns.org/?p=3146</guid>

					<description><![CDATA[Transmission-daemon es la versión de servidor del cliente de BitTorrent Transmission. A diferencia de la versión de escritorio con interfaz gráfica, transmission-daemon no tiene una interfaz visual propia y se ejecuta en segundo plano como un servicio o demonio. transmission-daemon es el «motor» de Transmission, y para interactuar con él, se usa una interfaz de [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><strong>Transmission-daemon</strong> es la versión de servidor del cliente de BitTorrent <strong>Transmission</strong>. A diferencia de la versión de escritorio con interfaz gráfica, <code>transmission-daemon</code> no tiene una interfaz visual propia y se ejecuta en segundo plano como un servicio o demonio. <br><code>transmission-daemon</code> es el «motor» de Transmission, y para interactuar con él, se usa una interfaz de control remoto. Puedes controlarlo a través de una interfaz web, un cliente de línea de comandos llamado <code>transmission-remote</code>, o aplicaciones móviles y de escritorio que se conectan a él.</p>



<p>La versión que viene con Debian 12 es la 3.0.0. Aunque ya ha salido Debian 13, me ha soprendido que esta viene con la versión 4.1.0-beta.2. ¿Software Beta en una distribucion estable?. Me lo creo porque lo he visto.</p>



<h2 class="wp-block-heading">Instala transmission-daemon</h2>



<p>Comenzamos instalando el demonio de transmission, así:</p>



<pre class="wp-block-code"><code>sudo apt-get install transmission-daemon</code></pre>



<h2 class="wp-block-heading">Backup</h2>



<p>Antes de editar cualquier archivo de configuración, es conveniente hacer una copia de seguridad. El archivo de configuración lo encontramos en la ruta <code>/etc/transmission-daemon/settings.json</code> </p>



<p>Y este es, el comando que ejecutaremos para hacer la copia:</p>



<pre class="wp-block-code"><code>sudo cp /etc/transmission-daemon/settings.json /etc/transmission-daemon/settings.json.bak</code></pre>



<h2 class="wp-block-heading">Configuración</h2>



<p>Este archivo de configuración, no puede ser modificado hasta que el servicio se haya detenido.</p>



<pre class="wp-block-code"><code>sudo systemctl stop transmission-daemon</code></pre>



<p>Solo con el servicio inactivo, podemos modificar las variables de su configuración y el comando que nos llevará a editarlo es:</p>



<pre class="wp-block-code"><code>sudo nano /etc/transmission-daemon/settings.json</code></pre>



<p>Se abrirá el archivo de configuración. Voy a subrayar en amarillo, los parámetros esenciales para comenzar a funcionar y  en verde para una ajustes recomendados.</p>



<pre class="wp-block-code"><code>{
    "alt-speed-down": 50,
    "alt-speed-enabled": false,
    "alt-speed-time-begin": 540,
    "alt-speed-time-day": 127,
    "alt-speed-time-enabled": false,
    "alt-speed-time-end": 1020,
    "alt-speed-up": 50,
    "bind-address-ipv4": "0.0.0.0",
    "bind-address-ipv6": "::",
    "blocklist-enabled": false,
    "blocklist-url": "http://www.example.com/blocklist",
    "cache-size-mb": 4,
    "dht-enabled": true,
    <mark style="background-color:#fcb900" class="has-inline-color">"download-dir":</mark> "/home/saltimbanki/Torrent/downloads",
    "download-limit": 100,
    "download-limit-enabled": 0,
    "download-queue-enabled": true,
    <mark style="background-color:#7bdcb5" class="has-inline-color">"download-queue-size"</mark>: 5,
    "encryption": 1,
    "idle-seeding-limit": 30,
    "idle-seeding-limit-enabled": false,
    <mark style="background-color:#fcb900" class="has-inline-color">"incomplete-dir":</mark> "/home/saltimbanki/Torrent/Incompleto",
    <mark style="background-color:#fcb900" class="has-inline-color">"incomplete-dir-enabled":</mark> true,
    "lpd-enabled": false,
    "max-peers-global": 200,
    "message-level": 1,
    "peer-congestion-algorithm": "",
    "peer-id-ttl-hours": 6,
    "peer-limit-global": 200,
    "peer-limit-per-torrent": 50,
    <mark style="background-color:#fcb900" class="has-inline-color">"peer-port":</mark> 52513,
    "peer-port-random-high": 65535,
    "peer-port-random-low": 49152,
    "peer-port-random-on-start": false,
    "peer-socket-tos": "default",
    "pex-enabled": true,
    "port-forwarding-enabled": false,
    "preallocation": 1,
    "prefetch-enabled": true,
    "queue-stalled-enabled": true,
    "queue-stalled-minutes": 30,
    <mark style="background-color:#7bdcb5" class="has-inline-color">"ratio-limit"</mark>: 2,
    <mark style="background-color:#7bdcb5" class="has-inline-color">"ratio-limit-enabled"</mark>: false,
    "rename-partial-files": true,
    <mark style="background-color:#fcb900" class="has-inline-color">"rpc-authentication-required":</mark> true,
    "rpc-bind-address": "0.0.0.0",
    "rpc-enabled": true,
    "rpc-host-whitelist": "",
    "rpc-host-whitelist-enabled": true,
    <mark style="background-color:#fcb900" class="has-inline-color">"rpc-password":</mark> "{4ekd6q42960doew46f8edboea2e19f7a76ea783faCmCzjes",
    <mark style="background-color:#fcb900" class="has-inline-color">"rpc-port":</mark> 29091,
    "rpc-url": "/transmission/",
    <mark style="background-color:#fcb900" class="has-inline-color">"rpc-username":</mark> "saltimbanki",
    "rpc-whitelist": "127.0.0.1",
    <mark style="background-color:#fcb900" class="has-inline-color">"rpc-whitelist-enabled"</mark>: false,
    "scrape-paused-torrents-enabled": true,
    "script-torrent-done-enabled": false,
    "script-torrent-done-filename": "",
    "seed-queue-enabled": false,
    "seed-queue-size": 10,
    <mark style="background-color:#7bdcb5" class="has-inline-color">"speed-limit-down"</mark>: 100,
    <mark style="background-color:#7bdcb5" class="has-inline-color">"speed-limit-down-enabled"</mark>: false,
    <mark style="background-color:#7bdcb5" class="has-inline-color">"speed-limit-up"</mark>: 100,
    <mark style="background-color:#7bdcb5" class="has-inline-color">"speed-limit-up-enabled"</mark>: false,
    "start-added-torrents": true,
    "trash-original-torrent-files": false,
    "umask": 18,
    "upload-limit": 100,
    "upload-limit-enabled": 0,
    "upload-slots-per-torrent": 14,
    "utp-enabled": true
}
</code></pre>



<p>Los parámetros más importantes que debes modificar en el archivo de configuración de <strong>Transmission</strong> son los que controlan la seguridad, las rutas de descarga y los límites de velocidad.</p>



<ul class="wp-block-list">
<li><strong>Configuración de Seguridad y Acceso</strong><br> * <code>rpc-authentication-required</code>: Si su valor es <code>true</code>, la interfaz web de Transmission estará protegida con autenticación. Los usuarios deberán introducir las credenciales definidas en los parámetros <code>"rpc-username"</code> y <code>"rpc-password"</code> para poder acceder y controlar el cliente de torrent. Si su valor es <code>false</code>, cualquiera que conozca la dirección IP y el puerto de tu servidor de Transmission podrá acceder a la interfaz web sin necesidad de credenciales. <strong>Esto es una configuración insegura</strong> que se recomienda evitar, especialmente si vas a habilitar el acceso desde fuera de tu red local.<br>* <code>rpc-username</code> y <code>rpc-password</code>: Estos definen el nombre de usuario y la contraseña para acceder a la interfaz web de Transmission. Si cambias la contraseña en texto plano, el demonio la cifrará automáticamente la próxima vez que se inicie.<br> * <code>rpc-whitelist-enabled</code>: Si este parámetro es <code>true</code>, solo las direcciones IP listadas en el siguiente parámetro (<code>rpc-whitelist</code>) podrán conectarse. Por defecto, es <code>true</code>, pero nosotros lo necesitamos en <code><strong>false</strong></code>, ya que lo usaremos para entrar desde fuera de la red.<br> * <code>port-forwarding-enabled</code>: Si está configurado en <code>true</code>, Transmission intentará automáticamente abrir un puerto en tu router para optimizar las conexiones de entrada. Esto es necesario para un buen rendimiento de descarga y siembra. Debes tener UPNP desactivado en el router, de lo contrario la puedes dejar en <code><strong>false</strong></code>.<br> * <code>peer-port</code>: Es el puerto TCP/UDP que utiliza <strong>Transmission</strong> (y cualquier cliente de BitTorrent) para conectarse a otros clientes (o «peers»). Se recomida cambiar a cualquier otro de tu elección.<br>  * <code>rcp-port</code>: Es el puerto TCP que <strong>Transmission</strong> utiliza para su Interfaz de Control Remoto. Por defecto, es el puerto <strong>9091</strong>. Cámbialo por otro de tu elección.</li>



<li><strong>Rutas y Descargas</strong><br> * <code>download-dir</code>: Esta es la ruta principal donde se guardarán los archivos una vez que la descarga esté completa. Puedes cambiarla a una ubicación más conveniente, como un disco duro externo. Asegúrate de que el usuario <code>debian-transmission</code> (o el usuario que ejecute el servicio) tenga permisos de escritura en esa carpeta.<br> * <code>incomplete-dir</code>: Es la ruta temporal, donde se guardan loa archivos que están en proceso de descarga. Esto es útil para mantener organizada la carpeta de descargas y evitar que se mezclen con archivos incompletos.<br>  * <code>incomplete-dir-enabled</code>: Si lo habilitas (<code>true</code>), Transmission guardará los archivos a medio descargar en una carpeta separada.</li>



<li><strong>Límites de velocidad y Cola</strong><br> * <code>speed-limit-down</code> y<code> speed-limit-up</code>: Estos parámetros establecen los límites de velocidad de descarga y subida en kilobytes por segundo (KB/s) para todos los torrents.<br> * <code>speed-limit-down-enabled</code> y <code>speed-limit-up-enabled</code>: Si los pones en <code>true</code>, los límites de velocidad globales se activarán.<br> * <code>download-queue-size</code>: Limita el número de torrents que se pueden descargar simultáneamente. Esto es útil para no sobrecargar la conexión.<br> * <code>ratio-limit</code> y <code>ratio-limit-enabled</code>: Permite que los torrents se detengan automáticamente cuando alcanzan una relación de subida/bajada específica. Por ejemplo, si el <code>ratio-limit</code> es <code>2</code> y está habilitado, el torrent se detendrá después de haber subido el doble de lo que descargó.</li>
</ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><strong>En cuanto a la contraseña</strong>: Cuando el servicio de <strong>Transmission</strong> se inicie, leerá la contraseña en texto plano que has escrito, la encriptará internamente y la guardará como un hash en el archivo <code>settings.json</code> al cerrarse. De esta manera, no necesitas generar el hash manualmente.</p>



<p><strong>En cuando a los puertos</strong>: No olvides abrir los puertos <code>peer-port</code> y <code>rcp-port</code> de router</p>
</blockquote>



<h2 class="wp-block-heading">Preparando a systemd</h2>



<p>Ahora <code>systemd</code> será el que tome el control del demonio.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Recuerda que continuamos con el servicio parado</p>
</blockquote>



<p>Editamos el servicio así.</p>



<pre class="wp-block-code"><code>sudo systemctl edit transmission-daemon.service</code></pre>



<p>la salida de este comando, nos devuelve lo siguiente:</p>



<pre class="wp-block-code"><code> ### Editing /etc/systemd/system/transmission-daemon.service.d/override.conf
 2 ### Anything between here and the comment below will become the new contents of the file
 3
 4 ### Lines below this comment will be discarded
 5 
 6 ### /lib/systemd/system/transmission-daemon.service
 7 # &#91;Unit]
 8 # Description=Transmission BitTorrent Daemon
 9 # After=network.target
10 #
11 # &#91;Service]
12 # User=debian-transmission
13 # Type=notify
14 # ExecStart=/usr/bin/transmission-daemon -f --log-error
15 # ExecStop=/bin/kill -s STOP $MAINPID
16 # ExecReload=/bin/kill -s HUP $MAINPID
17 # NoNewPrivileges=true
18 # &#91;Install]
19 #
20 # WantedBy=multi-user.target
21 
</code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Debes de saber, que este archivo, es editable solo entre la línea 2 y 4, todo lo que se escriba por debajo de la línea 4 no será tenido en cuenta, tal y como dice en la línea 4 (<code>Lines below this comment will be discarded</code>)</p>
</blockquote>



<p>A partir de la línea 3 vamos a escribir lo siguiente: </p>



<pre class="wp-block-code"><code>&#91;Unit]
 5 Description=Description=Transmission BitTorrent Daemon
 6 After=network.target network-online.target
 7 Wants=network-online.target
 8
 9
10 &#91;Service]
11 User=saltimbanki
12 Group=saltimbanki
13 ExecStart=
14 ExecStart=/usr/bin/transmission-daemon -f --log-error -g /etc/transmission-daemon/</code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Cambia User y Group por los tuyos respectivamente.</p>
</blockquote>



<p>Guarda con <code>Crtl + o</code> y sal del editor presionando <code>Ctrl + x</code></p>



<p>Reinicia el servicio.</p>



<pre class="wp-block-code"><code>sudo systemctl restart transmission-daemon</code></pre>



<p>Te dejo como queda finalmente una vez editado. (sombrado el nuevo texto)</p>



<pre class="wp-block-code"><code> 1 ### Editing /etc/systemd/system/transmission-daemon.service.d/override.conf
 2 ### Anything between here and the comment below will become the new contents of the file
 3
 4 <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color">&#91;Unit]</mark>
 5 <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color">Description=Description=Transmission BitTorrent Daemon</mark>
 6 <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color">After=network.target network-online.target</mark>
 7 <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color">Wants=network-online.target</mark>
 8
 9
10 <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color">&#91;Service]</mark>
11 <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color">User=</mark>saltimbanki
12 <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color">Group=</mark>saltimbanki
13 <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color">ExecStart=</mark>
14 <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color">ExecStart=/usr/bin/transmission-daemon -f --log-error -g /etc/transmission-daemon/</mark>
15
16 ### Lines below this comment will be discarded
17
18 ### /lib/systemd/system/transmission-daemon.service
19 # &#91;Unit]
20 # Description=Transmission BitTorrent Daemon
21 # After=network.target
22 # 
23 # &#91;Service]
24 # User=debian-transmission
25 # Type=notify
26 # ExecStart=/usr/bin/transmission-daemon -f --log-error
27 # ExecStop=/bin/kill -s STOP $MAINPID
28 # ExecReload=/bin/kill -s HUP $MAINPID
29 # NoNewPrivileges=true
30 # 
31 # &#91;Install]
32 # WantedBy=multi-user.target
33

</code></pre>



<h2 class="wp-block-heading">Establecer permisos.</h2>



<p>No sé como ni por qué , pero los desarradores, tuvieron la genial idea de que transmission-daemon corriese bajo el usuario <code>debian-transmission</code>. Nosotros en systemd lo haremos como nuestro usuario, en mi caso como <strong><code>saltimbanki</code></strong>. La carpeta <code>/etc/transmission-daemon/</code> y sus archivos, incluyendo <code>settings.json</code>, están, por defecto, en propiedad del usuario <code>debian-transmission</code>, lo que crea un conflicto de permisos.</p>



<p>Entonces, cambiaremos la propiedad de la carpeta <code>/etc/transmission-daemon/</code> y de todos los archivos contenidos en ella.</p>



<pre class="wp-block-code"><code>sudo chown -R saltimbanki:saltimbanki /etc/transmission-daemon</code></pre>



<p>Si listas los permisos del directorio transmission-daemon, verás que ahora somos los propietarios</p>



<pre class="wp-block-code"><code><strong>ls -l /etc/transmission-daemon/</strong>
total 24
drwxr-sr-x 2 saltimbanki saltimbanki 4096 sep  1 09:34 blocklists
-rw-r--r-- 1 saltimbanki saltimbanki  303 dic 19  2021 README.json
drwxr-sr-x 2 saltimbanki saltimbanki 4096 sep  1 09:34 resume
-rw------- 1 saltimbanki saltimbanki 2375 sep  1 09:34 settings.json
-rw------- 1 saltimbanki saltimbanki 2389 ago 31 10:37 settings.json.bak
drwxr-sr-x 2 saltimbanki saltimbanki 4096 sep  1 09:34 torrents
</code></pre>



<p>El archivo settings.json tambien está presente en la ruta <code>/var/lib/transmission-daemon/info</code> y se actualiza cuando modificamos el archivo principal, por lo que es mejor desactivarlo para evitar cualquier conflicto.</p>



<pre class="wp-block-code"><code>sudo mv /var/lib/transmission-daemon/info/settings.json /var/lib/transmission-daemon/info/settings.json.bak</code></pre>



<p>De esta forma, obligas al demonio a usar el archivo correcto en <code>/etc/transmission-daemon/settings.json</code></p>



<h2 class="wp-block-heading">Acceso remoto. </h2>



<h4 class="wp-block-heading">Acceso navegador.</h4>



<p>Se puede acceder remotamente desde cualquier navegador, ya sea PC, tablet, teléfono móvil. Tan solo necesitas saber la ruta y el puerto, que debería de estar abierto en el router.</p>



<p>Como voy a acceder desde mi propio equipo, en un navegador escribiré <kbd>http://localhost:29091</kbd></p>



<figure class="wp-block-image aligncenter size-full is-resized"><img fetchpriority="high" decoding="async" width="423" height="301" src="https://linuxete.duckdns.org/wp-content/uploads/2025/09/Seleccion_040.png" alt="" class="wp-image-3185" style="width:323px;height:auto" srcset="https://linuxete.duckdns.org/wp-content/uploads/2025/09/Seleccion_040.png 423w, https://linuxete.duckdns.org/wp-content/uploads/2025/09/Seleccion_040-300x213.png 300w" sizes="(max-width: 423px) 100vw, 423px" /></figure>



<p>Introduce el usuario y la contraseña que creaste.</p>



<figure class="wp-block-image aligncenter size-full is-resized"><img decoding="async" width="802" height="999" src="https://linuxete.duckdns.org/wp-content/uploads/2025/09/Transmission-Web-Interface-—-Mozilla-Firefox_001.png" alt="" class="wp-image-3186" style="width:324px;height:auto" srcset="https://linuxete.duckdns.org/wp-content/uploads/2025/09/Transmission-Web-Interface-—-Mozilla-Firefox_001.png 802w, https://linuxete.duckdns.org/wp-content/uploads/2025/09/Transmission-Web-Interface-—-Mozilla-Firefox_001-241x300.png 241w, https://linuxete.duckdns.org/wp-content/uploads/2025/09/Transmission-Web-Interface-—-Mozilla-Firefox_001-768x957.png 768w" sizes="(max-width: 802px) 100vw, 802px" /></figure>



<h4 class="wp-block-heading">Acceso APP android.</h4>



<p>Existe una aplicación para android, que te permite configurar tu servidor torrent y así decargar tus archivos allá donde estés.</p>



<p>La aplicación se llama Remote for Transmission, desarrollada por <a href="https://play.google.com/store/apps/developer?id=jgalat&amp;hl=es">jgalat</a>. La puedes descargar desde <a href="https://play.google.com/store/apps/details?id=ar.jg.remote&amp;hl=es" data-type="link" data-id="https://play.google.com/store/apps/details?id=ar.jg.remote&amp;hl=es">aquí</a>. </p>



<p>Tambien había en Play Store una aplicacion llamada Transmission Remote, la cual ha desaperecido de la tienda de Google, pero que puedes descargar he instalar desde aquí.</p>



<figure class="wp-block-image aligncenter size-large is-resized"><img decoding="async" width="461" height="1024" src="https://linuxete.duckdns.org/wp-content/uploads/2025/09/photo_2025-09-01_15-26-48-461x1024.jpg" alt="" class="wp-image-3206" style="width:335px;height:auto" srcset="https://linuxete.duckdns.org/wp-content/uploads/2025/09/photo_2025-09-01_15-26-48-461x1024.jpg 461w, https://linuxete.duckdns.org/wp-content/uploads/2025/09/photo_2025-09-01_15-26-48-135x300.jpg 135w, https://linuxete.duckdns.org/wp-content/uploads/2025/09/photo_2025-09-01_15-26-48.jpg 576w" sizes="(max-width: 461px) 100vw, 461px" /></figure>



<p>La primera parte del menú <code>Connection</code>, en <code>NAME</code>, deberás darle un nombre culquiera a tu servidor, tambien en <code>HOST /IP ADDRES</code> introduce la ruta al servidor y en <code>PORT</code> el puerto elegido. Tambien deberás activar la casilla <code>AUTHENTICATION</code>, para que se activen las casillas de <code>USERNAME</code> y <code>PASSWORD</code></p>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="461" height="1024" src="https://linuxete.duckdns.org/wp-content/uploads/2025/09/photo_2025-09-01_15-29-53-1-461x1024.jpg" alt="" class="wp-image-3205" style="width:356px;height:auto" srcset="https://linuxete.duckdns.org/wp-content/uploads/2025/09/photo_2025-09-01_15-29-53-1-461x1024.jpg 461w, https://linuxete.duckdns.org/wp-content/uploads/2025/09/photo_2025-09-01_15-29-53-1-135x300.jpg 135w, https://linuxete.duckdns.org/wp-content/uploads/2025/09/photo_2025-09-01_15-29-53-1.jpg 576w" sizes="auto, (max-width: 461px) 100vw, 461px" /></figure>



<p>Continuando mas abajo, introduciremos el <code>USERNAME</code> y <code>PASSWORD</code> y haremos un test connection para ver que todo a salido bien. Si todo bien, pulsa <code>save</code></p>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="461" height="1024" src="https://linuxete.duckdns.org/wp-content/uploads/2025/09/photo_2025-09-01_16-52-54-461x1024.jpg" alt="" class="wp-image-3209" style="width:331px;height:auto" srcset="https://linuxete.duckdns.org/wp-content/uploads/2025/09/photo_2025-09-01_16-52-54-461x1024.jpg 461w, https://linuxete.duckdns.org/wp-content/uploads/2025/09/photo_2025-09-01_16-52-54-135x300.jpg 135w, https://linuxete.duckdns.org/wp-content/uploads/2025/09/photo_2025-09-01_16-52-54.jpg 576w" sizes="auto, (max-width: 461px) 100vw, 461px" /></figure>



<p>Una vez dentro puedes añadir cualquier torrent desde tu teléfno, para que se añada a tu equipo de casa y comience a descargar.</p>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="461" height="1024" src="https://linuxete.duckdns.org/wp-content/uploads/2025/09/photo_2025-09-01_15-34-55-461x1024.jpg" alt="" class="wp-image-3207" style="width:362px;height:auto" srcset="https://linuxete.duckdns.org/wp-content/uploads/2025/09/photo_2025-09-01_15-34-55-461x1024.jpg 461w, https://linuxete.duckdns.org/wp-content/uploads/2025/09/photo_2025-09-01_15-34-55-135x300.jpg 135w, https://linuxete.duckdns.org/wp-content/uploads/2025/09/photo_2025-09-01_15-34-55.jpg 576w" sizes="auto, (max-width: 461px) 100vw, 461px" /></figure>



<p>Cuando las descargas terminan, la barra de progreso quedará al 100.0% y se tornará en color verde.</p>



<h4 class="wp-block-heading">Cómo generar/modifcar la contraseña.</h4>



<p>En el caso de que debas cambiar la contraseña, estos son los paso que debes seguir para hacerlo.</p>



<ol start="1" class="wp-block-list">
<li>Detén el servicio de Transmission antes de editar el archivo de configuración, ya que Transmission sobrescribe el archivo con sus ajustes al apagarse.<br>   <code>sudo systemctl stop transmission-daemon</code></li>



<li>Edita el archivo de configuración settings.json <br>   <code>sudo nano /etc/transmission-daemon/settings.json</code></li>



<li>Inserta la contraseña en texto plano, busca la línea «rpc-password» y cambia su valor por la contraseña que deseas usar, entre comillas. <br>Por ejemplo: «<code>rpc-password": "mi_nueva_contraseña_secreta", </code>Asegúrate de que <code>"rpc-authentication-required"</code> esté establecido en <code>true</code>.</li>



<li>Guarda con Crtl + o y sal del editor presionando Ctrl+X.</li>



<li><strong>Inicia el servicio de Transmission:</strong><br><code>sudo systemctl start transmission-daemon</code></li>



<li>(Opcional) Verifica el cambio. Puedes detener el servicio nuevamente y abrir el archivo settings.json para ver que la contraseña se ha transformado en un hash encriptado.<br><code>   sudo systemctl stop transmission-daemon</code><br>Ahora vuelve a comprobar<br><code>   sudo nano /etc/transmission-daemon/settings.json </code><br>Verás que la línea ahora contiene un hash largo, similar a esto: «<code>rpc-password": "{hash_encriptado_automáticamente}",</code></li>
</ol>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Nota, cuidado si usas la Ñ en tu password, te dará más problemas que un impago a Hacienda.</p>
</blockquote>
]]></content:encoded>
					
					<wfw:commentRss>https://linuxete.duckdns.org/como-iniciar-transmission-daemon-con-systemd/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
