Laconica
Aus Vosp
Installation
Firewall
#jabber iptables -A INPUT -p tcp --dport 5222 -j MYACCEPT iptables -A OUTPUT -p tcp --dport 5222 -j MYACCEPT
Installation
Linux (Debian) Pakete
apt-get install apache2 php5 mysql-server-5.0 php5-curl php5-gd php-pear php5-mysql
PEAR Pakete
pear install --alldeps channel://pear.php.net/Validate-0.8.1 pear install --alldeps DB_DataObject pear install --alldeps Mail pear install --alldeps Mail_Mime pear channel-discover pear.michelf.com pear install michelf/markdown
PHP Pakete
#cd /usr/share/php #wget http://oauth.googlecode.com/svn/code/php/OAuth.php wget http://laconi.ca/laconica-0.6.1.tar.gz tar -zxf laconica-0.6.1.tar.gz mv laconica-0.6.1 /var/www/laconica chmod a+w /var/www/laconica/avatar chgrp www-data /var/www/laconica/avatar chmod g+w /var/www/laconica/avatar #mv /var/www/laconica/extlib/XMPPHP/ /usr/share/php/
MySql
cd /var/www/laconica/db mysqladmin create db_laconica mysql db_laconica < laconica.sql mysql
51&q=GRANT&lr=lang_en">GRANT 51&q=SELECT&lr=lang_en">SELECT,51&q=INSERT&lr=lang_en">INSERT,51&q=DELETE&lr=lang_en">DELETE,51&q=UPDATE&lr=lang_en">UPDATE 51&q=ON&lr=lang_en">on db_laconica.* 51&q=TO&lr=lang_en">TO 'user_laconica'@'localhost' IDENTIFIED BY 'passwd';
cd /var/www/laconica/classes mv laconica.ini db_laconica.ini
wichtige module
fancy
- lesbare Urls nutzen
WICHTIG: anscheinend hängt von fancy ab
- nachrichten von laconica versenden an jabber client
- nachrichten abonieren von anderen laconica server
laconica/config.php
$config['site']['fancy'] = true;
# apache modul rewrite einbinden
a2enmod rewrite
- .htaccess Datei anpassen
- Webverzeichnis angeben, welches von der domain (domain.tld/laconica) abhängig ist (nicht unix)
RewriteBase /laconica/
cp /var/www/laconica/htaccess.sample /var/www/laconica/.htaccess
- mögliche Probleme
- Umleitungsschleife Achtung: drauf achten das .htaccess überhaupt erlaubt ist (AllowOverride All)
xmpp - jabber
exim
postfix
Catchall - laconica mail eingang
catchall in virtual map anlegen
- /etc/postfix/valiases anlegen
@domain.tld catchall
- Datei mappen
postmap /etc/postfix/valiases
- in /etc/postfix/main.cf folgenden Eintrag hinzufügen, achtung könnte schon vorhanden sein
virtual_alias_maps = hash:/etc/postfix/valiases
jetzt catchall in /etc/aliases anlegen
- catchall und maildaemon Skript eintragen und zwar mit Pipe
catchall: |/var/www/mensch.coop/mikro/scripts/maildaemon.php
newaliases
postfix neustarten
/etc/init.d/postfix restart
die Probe
echo 'body' | mail -s 'subject' unbekannt__@domain.tld
- und jetzt in der log DAtein nachschauen
tail -f /var/log/mail.log
Bei Laconica anpassen
- Problem wir benutzen PHP 5
es werden unter Laconica aber unter $Laconica_Verzeichnis/skripte/maildaemon.php die Funktion
mailparse_rfc822_parse_addresses()Mittels der PECL Bibliotheck mailparse benutzt diese funktioniert nur mit PHP4
- einbinden der Bibliothek pear Mail
pear install Mail
- in die Config $Laconica_Verzeichnis/config.php funktion eintragen:
if ( !function_exists('mailparse_rfc822_parse_addresses')) { require_once "PEAR.php"; require_once "Mail/RFC822.php"; function mailparse_rfc822_parse_addresses($addr){ $adresses = Mail_RFC822::parseAddressList($addr); $num = count($adresses); $i=0; for($i=0;$i <$num; $i++ ){ $new_adress[$i]['address'] = $adresses[$i]->mailbox . '@' . $adresses[$i]->host; } return $new_adress; } }
Diese stellt dann eine umwandlung mit dem selben Output wie die mailparse_rfc822_parse_addresses() Funktion sicher
SMS
Vorgehensweise:
ein Mensch schreibt eine sms an seinen Handyprovider, dieser leitet die Nachricht als Mail an den Mail Server (Laconica#email) weiter
Handy Netze
- bei den verschiedenen Handy-Provider-Anbietern die sms2mail2sms Funktion einrichten
eplus/base
- eplus: handynummer@smsmail.eplus.de
- SMS-Message "start" an 7676245
- SMS-Message "stop" an 7676245
- E-Plus SMS als Mail
- SMS an 7676245
<sms>mailstring@mikro.mensch.coop Hierher kommt die super Nachricht</sms>
o2
- o2: handynummer@o2online.de (0,19€/SMS)
- SMS-Message "start" an 6245
- SMS-Message "stop" an 6245
- O2 SMS als Mail
- SMS an 6245:
<sms>mailstring@mikro.mensch.coop Hierher kommt die super Nachricht</sms>
weitere
- SMS2Mail von allen Providern
mysql
folgene zeilen in die db/carrier.sql Datein hinzufügen
51&q=INSERT&lr=lang_en">insert 51&q=INTO&lr=lang_en">into sms_carrier (name, email_pattern, created) 51&q=VALUES&lr=lang_en">values ('D1 T-Mobile (de)', '%s@t-d1-sms.de', 5.1/en/date-and-time-functions.html">now()), ('D2 Vodafone (de)', '%s@d2-message.de', 5.1/en/date-and-time-functions.html">now()), ('O2 (de)', '%s@o2online.de', 5.1/en/date-and-time-functions.html">now()), ('eplus (de)', '%s@smsmail.eplus.de', 5.1/en/date-and-time-functions.html">now()), ...;
mysql -u "user_laconica" --password="passwd" db_laconica < /var/www/laconica/db/carrier.sql
optional
Hilfestellung auf der Seite für den Benutzer
folgende zeilen in die actions/smssettings.php Datei eintragen, damit auf der webseite für den Benutzer ein paar hilfestellungen stehen
<? class SmssettingsAction extends EmailsettingsAction { function carrier_select() { /* ...... */ common_element('li', 'css_class','eplus: handynummer@smsmail.eplus.de (SMS-Message "start" an 7676245) (SMS-Message "stop" an 7676245)'); common_element('li', 'css_class','o2: handynummer@o2online.de (0,19€/SMS) (SMS-Message "start" an 6245) (SMS-Message "stop" an 6245) '); } } ?>
config.php
<?php /* -*- mode: php -*- */ if (!defined('LACONICA')) { exit(1); } if ( !function_exists('sys_get_temp_dir')) { require('get_temp_dir.php'); } #If you have downloaded libraries in random little places, you #can add the paths here #$extra_path = array("/opt/php-openid-2.0.1", "/usr/local/share/php"); #set_include_path(implode(PATH_SEPARATOR, $extra_path) . PATH_SEPARATOR . get_include_path()); # We get called by common.php, $config is a tree with lots of config # options # These are for configuring your URLs $config['site']['name'] = 'mensch.coop'; $config['site']['server'] = 'liebigserver.homelinux.org'; $config['site']['path'] = 'laconica'; $config['site']['fancy'] = true; $config['site']['theme'] = 'stoica'; #For contact email, defaults to $_SERVER["SERVER_ADMIN"] $config['site']['email'] = 'laconica@mensch.coop'; #Brought by... $config['site']['broughtby'] = 'mensch.coop e.G. i.G.'; $config['site']['broughtbyurl'] = 'http://mensch.coop/'; #If you don't want to let users register (say, for a one-person install) #Crude but effective -- register everybody, then lock down #$config['site']['closed'] = true; # If you want logging sent to a file instead of syslog $config['site']['logfile'] = '/tmp/laconica.log'; # This is a PEAR DB DSN, see http://pear.php.net/manual/en/package.database.db.intro-dsn.php # Set it to match your actual database $config['db']['database'] = 'mysql://user_laconica:passwd@localhost/db_laconica'; #$config['db']['ini_your_db_name'] = $config['db']['schema_location'].'/laconica.ini'; # *** WARNING *** WARNING *** WARNING *** WARNING *** # Setting debug to a non-zero value will expose your DATABASE PASSWORD to Web users. # !!!!!! DO NOT SET THIS ON PRODUCTION SERVERS !!!!!! DB_DataObject's bug, btw, not # ours. # *** WARNING *** WARNING *** WARNING *** WARNING *** #$config['db']['debug'] = 0; #$config['db']['db_driver'] = 'MDB2'; #Database type. For mysql, these defaults are fine. For postgresql, set #'quote_identifiers' to true and 'type' to 'pgsql': #$config['db']['quote_identifiers'] = false; $config['db']['type'] = 'mysql'; #session_set_cookie_params(0, '/'. $config['site']['path'] .'/'); #Standard fancy-url clashes prevented by not allowing nicknames on a blacklist #Add your own here. Note: empty array by default $config['nickname']['blacklist'][] = 'hitler'; # xmpp $config['xmpp']['enabled'] = true; $config['xmpp']['server'] = 'jabber.org'; #$config['xmpp']['host'] = NULL; # Only set if different from server $config['xmpp']['port'] = 5222; $config['xmpp']['user'] = 'micro.mensch'; $config['xmpp']['encryption'] = true; $config['xmpp']['resource'] = 'laconica'; $config['xmpp']['password'] = 'passwd'; $config['xmpp']['public'][] = 'mensch@jabber.ccc.de'; // $config['xmpp']['debug'] = true; #Default locale info $config['site']['timezone'] = 'Europe/Berlin'; $config['site']['language'] = 'de_DE.utf8'; #Email info, used for all outbound email $config['mail']['notifyfrom'] = 'laconica@mensch.coop'; // $config['mail']['domain'] = 'mensch.coop'; # See http://pear.php.net/manual/en/package.mail.mail.factory.php for options # Achtung: Wichtig: ## mail server muss die emails auch annehmen. ## z.B. wenn qmail auf dem smtp mail server läuft muss in die ## /var/qmail/control/rcpthosts Datei die mailserver Adressen ## eingetragen werden, was teilweise auch für die laconica ## Mitglieder mail Adressen gilt, was ein Problem darstellt. ## oder die sms2mail Adressen ## z.B. echo 'smsmail.eplus.de' >> /var/qmail/control/rcpthosts ## echo 't-mobile-sms.de' >> /var/qmail/control/rcpthosts ## /etc/init.d/qmail restart $config['mail']['backend'] = 'smtp'; $config['mail']['params'] = array( 'host' => 'mensch.coop', 'port' => 25, 'username' => 'laconica@mensch.coop', 'password' => 'passwd' ); #For incoming email, if enabled. Defaults to site server name. $config['mail']['domain'] = 'liebigserver.homelinux.org'; #exponential decay factor for tags, default 10 days #raise this if traffic is slow, lower it if it's fast #$config['tag']['dropoff'] = 86400.0 * 10; #optionally show non-local messages in public timeline #$config['public']['localonly'] = false; #Do notice broadcasts offline #If you use this, you must run the six offline daemons in the #background. See the README for details. $config['queue']['enabled'] = true; #The following customise the behaviour of the various daemons: #$config['daemon']['piddir'] = '/var/run'; #$config['daemon']['user'] = false; #$config['daemon']['group'] = false; #For installations with high traffic, laconica can use MemCached to cache #frequently requested information. Only enable the following if you have #MemCached up and running: // $config['memcached']['enabled'] = true; // $config['memcached']['server'] = 'localhost'; // $config['memcached']['port'] = 11211; #Twitter integration source attribute. Note: default is Laconica #$config['integration']['source'] = 'Laconica';
Starten
# Skripte ausführbar machen chmod +x /var/www/laconica/scripts/*.sh
echo $0 $1 $2 var_laconica_dir='/var/www/laconica/'; case "$1" in start) $var_laconica_dir'scripts/startdaemons.sh' /etc/init.d/memcached start /etc/init.d/apache2 start ;; stop) /etc/init.d/apache2 stop /etc/init.d/memcached stop $var_laconica_dir'scripts/stopdaemons.sh' ;; status) ;; restart) $0 stop $0 start ;; *) echo $0 ' [start||stop||status||restart] not '$1; ;; esac exit 0
upgrade
backup
# backup - Source Code laconcia cp /var/www/Pfad/zur/Software/laconica /var/www/Pfad/zur/Software/backup/laconica_0.6.2.081130 -r # backup - Datenbank db_laconica mysqldump -u root -p db_laconica > db_laconica.0.6.2.081130.sql mysqladmin -u root -p create db_laconica_backup081130 mysql -u root -p db_laconica_backup081130 < db_laconica.0.6.2.081130.sql
Backup (Datenbank/...) für den temporären Gebrauch einrichten
mysql -u root -p
51&q=GRANT&lr=lang_en">GRANT 51&q=SELECT&lr=lang_en">SELECT,51&q=INSERT&lr=lang_en">INSERT,51&q=DELETE&lr=lang_en">DELETE,51&q=UPDATE&lr=lang_en">UPDATE 51&q=ON&lr=lang_en">on db_laconica_backup081130.* 51&q=TO&lr=lang_en">TO 'user_laconica'@'localhost' IDENTIFIED BY 'passwd'; exit
cd /var/www/Pfad/zur/Software/laconica/classes cp db_laconica.ini db_laconica_backup081130.ini
- /var/www/Pfad/zur/Software/laconica/config.php editieren
// folgende Zeile auskommentieren bzw. modifizieren // $config['db']['database'] = 'mysql://user_laconica:passwd@localhost/db_laconica'; $config['db']['database'] = 'mysql://user_laconica:passwd@localhost/db_laconica_backup081130';
- nun im Webbrowser ausprobieren ob die alte laconi.ca Version mit der Backupdatenbank funktioniert
neue Version temporär einrichten
# neuen SourceCode von http://laconi.ca/trac/ runterladen wget http://laconi.ca/laconica-0.6.3.tar.gz tar -xzf laconica-0.6.3.tar.gz mv laconica-0.6.3 /var/www/Pfad/zur/Software/laconica_tmp cd /var/www/Pfad/zur/Software/laconica_tmp cp /var/www/Pfad/zur/Software/laconica/config.php . cp /var/www/Pfad/zur/Software/laconica/theme/identica/logo.png theme/identica/
- config.php anpassen
/** * temporäre serverurl eintragen */ // $config['site']['server'] = 'domain.tld/laconica'; $config['site']['server'] = 'domain.tld/laconica_tmp'; // .... /** * Datenbank umtragen */ // $config['db']['database'] = 'mysql://user_laconica:passwd@localhost/db_laconica_backup081130'; $config['db']['database'] = 'mysql://user_laconica:passwd@localhost/db_laconica';
cp classes/laconica.ini classes/db_laconica.ini
- htaccess
cp htaccess.sample .htaccess
# NOTE: change this to your actual Laconica path; may be "/". #RewriteBase /mublog/ RewriteBase /
- Rechte setzen
chgrp www-data avatar/ chmod g+w avatar/ #chmod u+x scripts/rebuilddb.sh chmod u+x scripts/*.sh
- Datenbank upgraden
./scripts/rebuilddb.sh root password db_laconica db/laconica.sql
und nun schön testen mit der temporären Version ob auch alles seine richtigkeit hat ;)
Umzug: von temporärer Version zur richtigen
vielleicht noch mal schauen das auch niemand zwischenzeitlich etwas gemacht hat
- config.php
# serverurl wieder korrigieren $config['site']['server'] = 'mikro2.neumensch.info'; // $config['site']['server'] = 'mikro.mensch.coop';
- verzeichnis verschieben
rm /var/www/Pfad/zur/Software/laconica cp /var/www/Pfad/zur/Software/laconica_tmp /var/www/Pfad/zur/Software/laconica -r
Fehlerliste
- die Avatars werden bei der Cross-Server-Federation nicht mitgesendet!
- bei Twibble und Gwibber funktioniert mikro.mensch.coop nicht, obwohl sie eine laconi.ca-Unterstützung haben. Dies Fehlermeldung bei Gwibber lautet:IvalidURL: nonnumeric port. Bei Twibble habe ich gerade keine Fehlermeldung gefunden - kommt noch!
Derzeit ist glaube ich Thwirl der einzigste Destop-Client, der mit uns meines Wissens nach funktioniert!
Probleme
/dev/urandom
Warning: file_exists() [function.file-exists]: open_basedir restriction in effect. File(/dev/urandom) is not within the allowed path(s): (/var/www/vhosts/mensch.coop/subdomains/micro/httpdocs:/tmp) in /var/www/vhosts/mensch.coop/subdomains/micro/httpdocs/lib/util.php on line 1320
- installieren
apt-get install reseed
- konfigurieren
more /etc/php5/apache2/php.ini | grep urandom session.entropy_file = /dev/urandom
DB_DataObject Error: Unable to load schema for database
DB_DataObject Error: Unable to load schema for database and table (turn debugging up to 5 for full error message)
höchstwahrscheinlich ist der Datenbankname nicht laconica (wurde per hand geänder), deshalb ist die default laconica.ini falsch
#$config['db']['ini_your_db_name'] = $config['db']['schema_location'].'/laconica.ini'; $config['db']['ini_your_db_name'] = $config['db']['schema_location'].'/laconica_newDBName.ini';
Umleitungsschleife
Umleitungsschleife
Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann.
in der Apache Konfiguration wird .htaccess nicht erlaubt
AllowOverride None
muss aber erlaubt werden z.B.
AllowOverride All
da fancy drauf zugreifen will ;)
Beispiel:
# Datei /etc/apache2/sites-available/sub bearbeiten # folgendes wurde zusätzlich eingefügt (wichtig: AllowOverride all) <Directory /var/www/domain/sub> Options Indexes FollowSymLinks MultiViews AllowOverride all Order allow,deny allow from all </Directory>
jabber - xmmp: nachrichten von laconica zum jabberclient kommen nicht an
fancy einrichten
abonieren vom fremden laconica system funktioniert nicht
fancy einrichten
requires PEAR Installer (version >= 1.6.0), installed version is 1.4.11
Fehlermeldung:
pear install Mail_Mime pear/Mail_Mime requires PEAR Installer (version >= 1.6.0), installed version is 1.4.11 pear/Mail_mimeDecode requires PEAR Installer (version >= 1.6.0), installed version is 1.4.11 pear/Mail_mimeDecode requires package "pear/Mail_Mime" (version >= 1.4.0, excluded versions: 1.4.0) No valid packages found install failed
PEAR updaten
pear upgrade PEAR
/var/log/exim4/mainlog: transport "address_file" not found in system_aliases router
Fehlermeldung:
tail -f /var/log/exim4/mainlog 2008-11-09 02:52:12 1Kyw0d-0002dr-E3 == /var/www/laconica/scripts/maildaemon.php (postmaster@server.homelin.org) <86f8d04f01fe4cb0@server.homelin.org> R=system_aliases defer (-30): transport "address_file" not found in system_aliases router
# transport
address_file:
driver = appendfile
delivery_date_add
envelope_to_add
return_path_add
# router system_aliases: # debug_print = "R: system_aliases for $local_part@$domain" driver = redirect #domains = +local_domains allow_fail allow_defer data = ${lookup{$local_part}lsearch{/etc/aliases}} user = www-data file_transport = address_file pipe_transport = address_pipe
Fetter Text
Tools
monit
(Daemon checker, falls Daemon abschmiert)
crontab
(regelmäßig die Daemons neustarten)
Quellen
- Laconica - The Open Microblogging Tool
- Anleitungen
Installation old
Vorbereitung
Debian Pakete
apt-get install apache2 php5 mysql-server-5.0 php5-curl php5-gd php-pear php5-mysql php5-gmp reseed # php5-gmp: zusätzliche Quelle in /etc/apt/source.list # deb http://packages.dotdeb.org stable all
(apache2-mpm-prefork apache2-utils apache2.2-common libapache2-mod-php5 libapr1 libaprutil1 libdbd-mysql-perl libdbi-perl libgd2-xpm libmysqlclient15off libnet-daemon-perl libplrpc-perl libpq5 libt1-5 mysql-client-5.0 mysql-common php5-common php5-cli)
PEAR Packete
#pear install --alldeps Validate pear install --alldeps channel://pear.php.net/Validate-0.8.1 pear install --alldeps DB_DataObject pear install --alldeps Mail
OpenID
apt-get install php5-gmp ## evt. in die source.list eingtragen ## deb http://packages.dotdeb.org stable all ## (deb-src http://packages.dotdeb.org stable all) # pear install DB wget http://openidenabled.com/files/php-openid/packages/php-openid-2.1.2.tar.bz2 # bzw: http://openidenabled.com/php-openid/ # entpacken tar -xjf php-openid-2.1.2.tar.bz2 # Auth ins php include kopieren cp php-openid-2.1.2/Auth/* /usr/share/php/Auth/ -r
TEST openid( cp consumer/ /var/www/OPENIDConsumer -r /etc/init.d/apache2 restart )
xmpphp
OAuth
cd /usr/share/php wget http://oauth.googlecode.com/svn/code/php/OAuth.php* noch nicht geprüft, ob an der richtigen stelle
markdown
pear channel-discover pear.michelf.com pear install michelf/markdown
Laconica
Source Code
wget http://laconi.ca/laconica-0.6.1.tar.gz tar -zxf laconica-0.6.1.tar.gz # alternativ # darcs get --partial http://laconi.ca/darcs/ laconica # und dann immer updaten mit darcs pull http://laconi.ca/darcs/ mv laconica-0.6.1 /var/www/laconica chmod a+w /var/www/laconica/avatar chgrp www-data /var/www/laconica/avatar chmod g+w /var/www/laconica/avatar
Datenbank
#mysqladmin create laconica mysqladmin -u "username" --password="password" create laconica #mysql laconica < /var/www/laconica/db/laconica.sql mysql -u "username" --password="password" laconica < /var/www/laconica/db/laconica.sql
- als admin einloggen
51&q=GRANT&lr=lang_en">GRANT 51&q=SELECT&lr=lang_en">SELECT,51&q=INSERT&lr=lang_en">INSERT,51&q=DELETE&lr=lang_en">DELETE,51&q=UPDATE&lr=lang_en">UPDATE 51&q=ON&lr=lang_en">on laconica.* 51&q=TO&lr=lang_en">TO 'lacuser'@'localhost' IDENTIFIED BY 'lacpassword';
Konfiguration
cp /var/www/laconica/config.php.sample /var/www/laconica/config.php
<? if (!defined('LACONICA')) { exit(1); } ?>
mensch.coop spezifisch
- Für die Startseite Anzeige actions/public.php:
function showAnonymousMessage() { $m = _('Dies ist der Mikroblogging-Server der <a href="http://mensch.coop">mensch.coop eG</a>, welche mit der Open-Source-Software <a href="http://laconi.ca/">Laconica</a> betrieben wird.'. 'Unser Server ist Sozialen Bewegungen, Solidarischer Ökonomie und Kunst/Kultur gewidmet, sowie Menschen, die sich in diesem Umfeld wohlfühlen. Nutze unsere Plattform um Dir/Euch einen eignen Kurznachrichtenticker einzurichten und Dich/Euch mit anderen zu vernetzen. ([Hilfe (EN)](%%doc.help%%))'); $this->elementStart('div', array('id' => 'anon_notice')); $this->raw(common_markup_to_html($m)); $this->elementEnd('div'); }
- Für die Browserleistenanzeige config.php
$config['site']['name'] = 'Mikroblogging-Server für Soziale Bewegungen, Solidarische Ökonomie und mehr!';
BUGS
- 0.7.1 Remote connect mit identi.ca funktioniert nicht Fehlermeldung:
Fatal error: Uncaught exception 'Exception' with message 'Lost our file.' in /*****/******/*****/lib/imagefile.php:112 Stack trace: #0 /*****/******/*****/classes/Profile.php(97): ImageFile->resize(96) #1 /*****/******/*****/actions/userauthorization.php(333): Profile->setOriginal('/tmp/listenee_a...') #2 /*****/******/*****/actions/userauthorization.php(306): UserauthorizationAction->addAvatar(Object(Profile), 'http://identi.c...') #3 /var/www/mensch.coop/mikro/actions/userauthorization.php(163): UserauthorizationAction->saveRemoteProfile(Object(OAuthRequest)) #4 /*****/******/*****/actions/userauthorization.php(44): UserauthorizationAction->sendAuthorization() #5 [internal function]: UserauthorizationAction->handle(Array) #6 /*****/******/*****/index.php(70): call_user_func(Array, Array) #7 {main} thrown in /*****/******/*****/lib/imagefile.php on line 112
Lösung: Softlink von /*****/******/*****/avatar nach /tmp
cd avatar ln -s /tmp /*****/******/*****/avatar/tmp

