|  | @@ -1,228 +0,0 @@
 | 
	
		
			
			| 1 |  | -# Introduction to POD #
 | 
	
		
			
			| 2 |  | -
 | 
	
		
			
			| 3 |  | -Tracim is collaborative software designed to allow people to work on and share various data and document types. 
 | 
	
		
			
			| 4 |  | -
 | 
	
		
			
			| 5 |  | -It is [AGPL licenced](http://fr.wikipedia.org/wiki/GNU_Affero_General_Public_License) software.
 | 
	
		
			
			| 6 |  | -
 | 
	
		
			
			| 7 |  | -Tracim is licensed under the terms of the 
 | 
	
		
			
			| 8 |  | -[GNU Affero General Public License](http://www.gnu.org/licenses/agpl.txt)
 | 
	
		
			
			| 9 |  | -as published by the [Free Software Foundation](http://www.fsf.org/).
 | 
	
		
			
			| 10 |  | -
 | 
	
		
			
			| 11 |  | -It is currently unstable, it is recommended to use it for test purpose only.
 | 
	
		
			
			| 12 |  | -
 | 
	
		
			
			| 13 |  | -It's a python 3 web application based on [TurboGears](http://www.turbogears.org/); it uses [PostgreSQL](http://www.postgresql.org/) as storage engine.
 | 
	
		
			
			| 14 |  | -
 | 
	
		
			
			| 15 |  | -## Features ##
 | 
	
		
			
			| 16 |  | -
 | 
	
		
			
			| 17 |  | -* Data and document sharing: text documents, files, contact, calendar, comments
 | 
	
		
			
			| 18 |  | -* Data and document status
 | 
	
		
			
			| 19 |  | -* Full traceability
 | 
	
		
			
			| 20 |  | -* Access control management, document granularity.
 | 
	
		
			
			| 21 |  | -
 | 
	
		
			
			| 22 |  | -It allows to keep private and shared data in the same place.
 | 
	
		
			
			| 23 |  | -The ACL is based on share with groups or individual users.
 | 
	
		
			
			| 24 |  | -
 | 
	
		
			
			| 25 |  | -## Give it a try ##
 | 
	
		
			
			| 26 |  | -
 | 
	
		
			
			| 27 |  | -### Online demo ###
 | 
	
		
			
			| 28 |  | -The fastest way to test it is to test the demo:
 | 
	
		
			
			| 29 |  | -
 | 
	
		
			
			| 30 |  | -* http://demo.archipeldata.com
 | 
	
		
			
			| 31 |  | -* login: demo@localhost
 | 
	
		
			
			| 32 |  | -* password: demo
 | 
	
		
			
			| 33 |  | -
 | 
	
		
			
			| 34 |  | -### Install your own instance ###
 | 
	
		
			
			| 35 |  | -
 | 
	
		
			
			| 36 |  | -The other way to test it is to install it on your computer. See documentation below.
 | 
	
		
			
			| 37 |  | -
 | 
	
		
			
			| 38 |  | -## Installation ##
 | 
	
		
			
			| 39 |  | -
 | 
	
		
			
			| 40 |  | -### Dependencies###
 | 
	
		
			
			| 41 |  | -
 | 
	
		
			
			| 42 |  | -Note: the following information is for Debian. For other OS, adapt the package names.
 | 
	
		
			
			| 43 |  | -
 | 
	
		
			
			| 44 |  | -You'll need to install the following packages:
 | 
	
		
			
			| 45 |  | -
 | 
	
		
			
			| 46 |  | -    apt-get install realpath python3 python-virtualenv python3-dev python-pip build-essential postgresql-server-dev-all
 | 
	
		
			
			| 47 |  | -
 | 
	
		
			
			| 48 |  | -If you work on a local database, then you also need to install PostgreSQL:
 | 
	
		
			
			| 49 |  | -
 | 
	
		
			
			| 50 |  | -    apt-get install postgresql postgresql-client
 | 
	
		
			
			| 51 |  | -
 | 
	
		
			
			| 52 |  | -### Get the source ###
 | 
	
		
			
			| 53 |  | -
 | 
	
		
			
			| 54 |  | -Get the sources from Bitbucket:
 | 
	
		
			
			| 55 |  | -
 | 
	
		
			
			| 56 |  | -    git clone https://bitbucket.org/lebouquetin/pod.git
 | 
	
		
			
			| 57 |  | -
 | 
	
		
			
			| 58 |  | -**Note: Now everything is documented to be executed from the pod directory newly created.**
 | 
	
		
			
			| 59 |  | -
 | 
	
		
			
			| 60 |  | -### Setup a database ###
 | 
	
		
			
			| 61 |  | -
 | 
	
		
			
			| 62 |  | -#### Allowing local connections on PostgreSQL ####
 | 
	
		
			
			| 63 |  | -
 | 
	
		
			
			| 64 |  | -Check the pg_hba.conf file, it should allow connection for user/pass through loopback IP address.
 | 
	
		
			
			| 65 |  | -The file should include the following configuration:
 | 
	
		
			
			| 66 |  | -
 | 
	
		
			
			| 67 |  | -    # IPv4 local connections:
 | 
	
		
			
			| 68 |  | -    host    all             all             127.0.0.1/32            md5
 | 
	
		
			
			| 69 |  | -
 | 
	
		
			
			| 70 |  | -Note: on Debian, the pg\_hba file is found at /etc/postgresql/9.1/main/pg_hba.conf
 | 
	
		
			
			| 71 |  | -
 | 
	
		
			
			| 72 |  | -If you changed the file, reload PostgreSQL:
 | 
	
		
			
			| 73 |  | -
 | 
	
		
			
			| 74 |  | -    service postgresql reload
 | 
	
		
			
			| 75 |  | -
 | 
	
		
			
			| 76 |  | -#### Create a new database and user on PostgreSQL ####
 | 
	
		
			
			| 77 |  | -
 | 
	
		
			
			| 78 |  | -We suppose you will create a user named _poduser_ with passowrd _podpassword_
 | 
	
		
			
			| 79 |  | -and a database _poddb_
 | 
	
		
			
			| 80 |  | -
 | 
	
		
			
			| 81 |  | -First login as root, then su as postgre and run a PostgreSQL client:
 | 
	
		
			
			| 82 |  | -
 | 
	
		
			
			| 83 |  | -    root@hostname:~# su postgres
 | 
	
		
			
			| 84 |  | -    postgres@hostname:/root$ psql
 | 
	
		
			
			| 85 |  | -    psql (9.1.13)
 | 
	
		
			
			| 86 |  | -    Type "help" for help.
 | 
	
		
			
			| 87 |  | -    
 | 
	
		
			
			| 88 |  | -    postgres=# 
 | 
	
		
			
			| 89 |  | -    
 | 
	
		
			
			| 90 |  | -    
 | 
	
		
			
			| 91 |  | -Now, type the following commands:
 | 
	
		
			
			| 92 |  | -
 | 
	
		
			
			| 93 |  | -    CREATE ROLE poduser WITH LOGIN PASSWORD 'podpassword';
 | 
	
		
			
			| 94 |  | -    CREATE DATABASE poddb OWNER poduser;
 | 
	
		
			
			| 95 |  | -    GRANT ALL PRIVILEGES ON DATABASE poddb TO poduser;
 | 
	
		
			
			| 96 |  | -
 | 
	
		
			
			| 97 |  | -At the end, you can quit the psql client by running the \q quit command:
 | 
	
		
			
			| 98 |  | -
 | 
	
		
			
			| 99 |  | -    postgres=# \q
 | 
	
		
			
			| 100 |  | -    postgres@mozart:/root$
 | 
	
		
			
			| 101 |  | -
 | 
	
		
			
			| 102 |  | -#### Test the database access ####
 | 
	
		
			
			| 103 |  | -
 | 
	
		
			
			| 104 |  | -You can test your newly created user by running the following command:
 | 
	
		
			
			| 105 |  | -
 | 
	
		
			
			| 106 |  | -    psql -h 127.0.0.1 -W -U poduser poddb -c 'SELECT NOW();'
 | 
	
		
			
			| 107 |  | -
 | 
	
		
			
			| 108 |  | -The result should be similar to:
 | 
	
		
			
			| 109 |  | -
 | 
	
		
			
			| 110 |  | -    user@hostname:~$ psql -h 127.0.0.1 -W -U poduser poddb -c 'SELECT NOW();'
 | 
	
		
			
			| 111 |  | -    Password for user poduser: 
 | 
	
		
			
			| 112 |  | -                  now              
 | 
	
		
			
			| 113 |  | -    -------------------------------
 | 
	
		
			
			| 114 |  | -     2014-06-16 11:35:48.590838+02
 | 
	
		
			
			| 115 |  | -    (1 row)
 | 
	
		
			
			| 116 |  | -
 | 
	
		
			
			| 117 |  | -#### Setup the database schema and initial data ####
 | 
	
		
			
			| 118 |  | -
 | 
	
		
			
			| 119 |  | -Your database is now ready. Fill it with the required schema and data by importing SQL:
 | 
	
		
			
			| 120 |  | -
 | 
	
		
			
			| 121 |  | -    psql -h 127.0.0.1 -W -U poduser poddb < doc/database/pod-init-database.sql
 | 
	
		
			
			| 122 |  | -
 | 
	
		
			
			| 123 |  | -You can test it through the following command:
 | 
	
		
			
			| 124 |  | -
 | 
	
		
			
			| 125 |  | -    user@hostname:~$ psql -h 127.0.0.1 -W -U poduser poddb -c 'SELECT * from pod_user;'
 | 
	
		
			
			| 126 |  | -
 | 
	
		
			
			| 127 |  | -You should find the admin@localhost user entry.
 | 
	
		
			
			| 128 |  | -
 | 
	
		
			
			| 129 |  | -### Setup python virtualenv ###
 | 
	
		
			
			| 130 |  | -
 | 
	
		
			
			| 131 |  | -Tracim uses virtualenv as deployment environment. This ensure that there will be no 
 | 
	
		
			
			| 132 |  | -conflict between system-wide python modules and pod required ones.
 | 
	
		
			
			| 133 |  | -
 | 
	
		
			
			| 134 |  | -    virtualenv -p /usr/bin/python3 tg2env
 | 
	
		
			
			| 135 |  | -    source tg2env/bin/activate
 | 
	
		
			
			| 136 |  | -    cd pod && python setup.py develop && cd -
 | 
	
		
			
			| 137 |  | -    pip install -r install/requirements.txt
 | 
	
		
			
			| 138 |  | -    
 | 
	
		
			
			| 139 |  | -Notes:
 | 
	
		
			
			| 140 |  | -
 | 
	
		
			
			| 141 |  | -* Debian: you may get errors with stevedore/pbr which is not supported by python 3.2
 | 
	
		
			
			| 142 |  | -(debian version of python 3). This is not a real problem
 | 
	
		
			
			| 143 |  | -* Ubuntu (at least 14.04): you should remove _distribute_ and _wsgiref _
 | 
	
		
			
			| 144 |  | -  from the requirements.txt file
 | 
	
		
			
			| 145 |  | -
 | 
	
		
			
			| 146 |  | -### Create configuration ###
 | 
	
		
			
			| 147 |  | -
 | 
	
		
			
			| 148 |  | -    cp pod/development.ini.base pod/development.ini
 | 
	
		
			
			| 149 |  | -
 | 
	
		
			
			| 150 |  | -#### Database 
 | 
	
		
			
			| 151 |  | -
 | 
	
		
			
			| 152 |  | -Configure database in the development.ini file. This is defined as sqlalchemy.url
 | 
	
		
			
			| 153 |  | -and the default value is below:
 | 
	
		
			
			| 154 |  | -
 | 
	
		
			
			| 155 |  | -    sqlalchemy.url = postgresql://pod_user:pod_user_password@127.0.0.1:5432/pod
 | 
	
		
			
			| 156 |  | -
 | 
	
		
			
			| 157 |  | -#### Listening port
 | 
	
		
			
			| 158 |  | -
 | 
	
		
			
			| 159 |  | -Default configuration is to listen on port 8080. If you want to adapt this to your environment, edit the .ini file and setup the port you want:
 | 
	
		
			
			| 160 |  | -
 | 
	
		
			
			| 161 |  | -    port = 8080
 | 
	
		
			
			| 162 |  | -
 | 
	
		
			
			| 163 |  | -#### Interface language
 | 
	
		
			
			| 164 |  | -
 | 
	
		
			
			| 165 |  | -The default language is English. You can change it to french by uncommenting the following line in the .ini file:
 | 
	
		
			
			| 166 |  | -
 | 
	
		
			
			| 167 |  | -    lang = fr_FR
 | 
	
		
			
			| 168 |  | -
 | 
	
		
			
			| 169 |  | -    
 | 
	
		
			
			| 170 |  | -### Running Tracim as standalone ###
 | 
	
		
			
			| 171 |  | -
 | 
	
		
			
			| 172 |  | -Now you can run the standalone server:
 | 
	
		
			
			| 173 |  | -
 | 
	
		
			
			| 174 |  | -    ./bin/run.sh
 | 
	
		
			
			| 175 |  | -    
 | 
	
		
			
			| 176 |  | -Which should result in something like this:
 | 
	
		
			
			| 177 |  | -
 | 
	
		
			
			| 178 |  | -    13:53:49,982 INFO  [gearbox] Starting subprocess with file monitor
 | 
	
		
			
			| 179 |  | -    13:53:50,646 WARNI [py.warnings] /tmp/pod/protov1/tg2env/lib/python3.2/site-packages/tw2/core/validation.py:12: ImportWarning: Not importing directory '/tmp/pod/protov1/tg2env/lib/python3.2/site-packages/tw2/core/i18n': missing __init__.py
 | 
	
		
			
			| 180 |  | -      from .i18n import _
 | 
	
		
			
			| 181 |  | -    
 | 
	
		
			
			| 182 |  | -    13:53:50,862 INFO  [gearbox] Starting server in PID 11174.
 | 
	
		
			
			| 183 |  | -    Starting HTTP server on http://0.0.0.0:8080
 | 
	
		
			
			| 184 |  | -    
 | 
	
		
			
			| 185 |  | -You can now enter the application at [http://localhost:8080](http://localhost:8080) and login:
 | 
	
		
			
			| 186 |  | -
 | 
	
		
			
			| 187 |  | -* user : admin@localhost
 | 
	
		
			
			| 188 |  | -* password : admin
 | 
	
		
			
			| 189 |  | -    
 | 
	
		
			
			| 190 |  | -Enjoy :)
 | 
	
		
			
			| 191 |  | -
 | 
	
		
			
			| 192 |  | -
 | 
	
		
			
			| 193 |  | -### Running Tracim through Apache WSGI ###
 | 
	
		
			
			| 194 |  | -
 | 
	
		
			
			| 195 |  | -#### Dependencies ####
 | 
	
		
			
			| 196 |  | -
 | 
	
		
			
			| 197 |  | -Install dependencies:
 | 
	
		
			
			| 198 |  | -
 | 
	
		
			
			| 199 |  | -    apt-get install apache2 libapache2-mod-wsgi-py3
 | 
	
		
			
			| 200 |  | -
 | 
	
		
			
			| 201 |  | -#### WSGI configuration ####
 | 
	
		
			
			| 202 |  | -
 | 
	
		
			
			| 203 |  | -Example of Apache WSGI configuration. This configuration refers to productionapp.wsgi which is a copy of the file *app.wsgi* available in the repo. (this file has to be updated to match with your environment and installation)
 | 
	
		
			
			| 204 |  | -
 | 
	
		
			
			| 205 |  | -    <VirtualHost *:80>
 | 
	
		
			
			| 206 |  | -        ServerAdmin webmaster@archipeldata.com
 | 
	
		
			
			| 207 |  | -        ServerName demo.archipeldata.com
 | 
	
		
			
			| 208 |  | -
 | 
	
		
			
			| 209 |  | -        WSGIProcessGroup pod
 | 
	
		
			
			| 210 |  | -        WSGIDaemonProcess pod user=www-data group=adm threads=4 python-path=/opt/podinstall/tg2env/lib/python3.2/site-packages
 | 
	
		
			
			| 211 |  | -        WSGIScriptAlias / /opt/podinstall/pod/productionapp.wsgi
 | 
	
		
			
			| 212 |  | -
 | 
	
		
			
			| 213 |  | -        #Serve static files directly without TurboGears
 | 
	
		
			
			| 214 |  | -        Alias /img     /opt/podinstall/pod/pod/public/img/
 | 
	
		
			
			| 215 |  | -        Alias /favicon.ico /opt/podinstall/pod/pod/public/favicon.ico
 | 
	
		
			
			| 216 |  | -        Alias /css        /opt/podinstall/pod/pod/public/css
 | 
	
		
			
			| 217 |  | -        Alias /javascript /opt/podinstall/pod/pod/public/javascript
 | 
	
		
			
			| 218 |  | -
 | 
	
		
			
			| 219 |  | -        CustomLog /var/log/apache2/demopod-access.log combined
 | 
	
		
			
			| 220 |  | -        ErrorLog /var/log/apache2/demopod-error.log
 | 
	
		
			
			| 221 |  | -        LogLevel debug
 | 
	
		
			
			| 222 |  | -    </VirtualHost>
 | 
	
		
			
			| 223 |  | -
 | 
	
		
			
			| 224 |  | -### Help required ###
 | 
	
		
			
			| 225 |  | -
 | 
	
		
			
			| 226 |  | -If you need help, contact us. If you want to help, contact us. So... contact us ;)
 | 
	
		
			
			| 227 |  | -
 | 
	
		
			
			| 228 |  | -Damien Accorsi - damien.accorsi@free.fr
 |