| 1 |
------ |
| 2 |
README |
| 3 |
------ |
| 4 |
|
| 5 |
StatusNet 0.9.0 ("Stand") Beta 5 |
| 6 |
1 Feb 2010 |
| 7 |
|
| 8 |
This is the README file for StatusNet (formerly Laconica), the Open |
| 9 |
Source microblogging platform. It includes installation instructions, |
| 10 |
descriptions of options you can set, warnings, tips, and general info |
| 11 |
for administrators. Information on using StatusNet can be found in the |
| 12 |
"doc" subdirectory or in the "help" section on-line. |
| 13 |
|
| 14 |
About |
| 15 |
===== |
| 16 |
|
| 17 |
StatusNet (formerly Laconica) is a Free and Open Source microblogging |
| 18 |
platform. It helps people in a community, company or group to exchange |
| 19 |
short (140 characters, by default) messages over the Web. Users can |
| 20 |
choose which people to "follow" and receive only their friends' or |
| 21 |
colleagues' status messages. It provides a similar service to sites |
| 22 |
like Twitter, Jaiku, Yammer, and Plurk. |
| 23 |
|
| 24 |
With a little work, status messages can be sent to mobile phones, |
| 25 |
instant messenger programs (GTalk/Jabber), and specially-designed |
| 26 |
desktop clients that support the Twitter API. |
| 27 |
|
| 28 |
StatusNet supports an open standard called OpenMicroBlogging |
| 29 |
<http://openmicroblogging.org/> that lets users on different Web sites |
| 30 |
or in different companies subscribe to each others' notices. It |
| 31 |
enables a distributed social network spread all across the Web. |
| 32 |
|
| 33 |
StatusNet was originally developed for the Open Software Service, |
| 34 |
Identi.ca <http://identi.ca/>. It is shared with you in hope that you |
| 35 |
too make an Open Software Service available to your users. To learn |
| 36 |
more, please see the Open Software Service Definition 1.1: |
| 37 |
|
| 38 |
http://www.opendefinition.org/ossd |
| 39 |
|
| 40 |
StatusNet, Inc. <http://status.net/> also offers this software as a |
| 41 |
Web service, requiring no installation on your part. The software run |
| 42 |
on status.net is identical to the software available for download, so |
| 43 |
you can move back and forth between a hosted version or a version |
| 44 |
installed on your own servers. |
| 45 |
|
| 46 |
License |
| 47 |
======= |
| 48 |
|
| 49 |
This program is free software: you can redistribute it and/or modify |
| 50 |
it under the terms of the GNU Affero General Public License as |
| 51 |
published by the Free Software Foundation, either version 3 of the |
| 52 |
License, or (at your option) any later version. |
| 53 |
|
| 54 |
This program is distributed in the hope that it will be useful, but |
| 55 |
WITHOUT ANY WARRANTY; without even the implied warranty of |
| 56 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 57 |
Affero General Public License for more details. |
| 58 |
|
| 59 |
You should have received a copy of the GNU Affero General Public |
| 60 |
License along with this program, in the file "COPYING". If not, see |
| 61 |
<http://www.gnu.org/licenses/>. |
| 62 |
|
| 63 |
IMPORTANT NOTE: The GNU Affero General Public License (AGPL) has |
| 64 |
*different requirements* from the "regular" GPL. In particular, if |
| 65 |
you make modifications to the StatusNet source code on your server, |
| 66 |
you *MUST MAKE AVAILABLE* the modified version of the source code |
| 67 |
to your users under the same license. This is a legal requirement |
| 68 |
of using the software, and if you do not wish to share your |
| 69 |
modifications, *YOU MAY NOT INSTALL STATUSNET*. |
| 70 |
|
| 71 |
Additional library software has been made available in the 'extlib' |
| 72 |
directory. All of it is Free Software and can be distributed under |
| 73 |
liberal terms, but those terms may differ in detail from the AGPL's |
| 74 |
particulars. See each package's license file in the extlib directory |
| 75 |
for additional terms. |
| 76 |
|
| 77 |
New this version |
| 78 |
================ |
| 79 |
|
| 80 |
This is a major feature release since version 0.8.2, released Nov 1 2009. |
| 81 |
It is also a security release since 0.9.0beta4 January 27 2010. Beta |
| 82 |
users are strongly encouraged to upgrade to deal with a security alert. |
| 83 |
|
| 84 |
http://status.net/wiki/Security_alert_0000002 |
| 85 |
|
| 86 |
Notable changes this version: |
| 87 |
|
| 88 |
- Records of deleted notices are stored without the notice content. |
| 89 |
- Much of the optional core featureset has been moved to plugins. |
| 90 |
- OpenID support moved from core to a plugin. Helps test the strength of |
| 91 |
our plugin architecture and makes it easy to disable this |
| 92 |
functionality for e.g. intranet sites. |
| 93 |
- Many additional hook events (see EVENTS.txt for details). |
| 94 |
- OMB 0.1 support re-implemented using libomb. |
| 95 |
- Re-structure database so notices, messages, bios and group |
| 96 |
descriptions can be over 140 characters. Limit defined by |
| 97 |
site administrator as configuration option; can be unlimited. |
| 98 |
- Configuration data now optionally stored in the database, which |
| 99 |
overrides any settings in config files. |
| 100 |
- Twitter integration re-implemented as a plugin. |
| 101 |
- Facebook integration re-implemented as a plugin. |
| 102 |
- Role-based authorization framework. Users can have named roles, and |
| 103 |
roles can have rights (e.g., to delete notices, change configuration |
| 104 |
data, or ban uncooperative users). Default roles 'admin' (for |
| 105 |
configuration) and 'moderator' (for community management) added. |
| 106 |
- Plugin for PubSubHubBub (PuSH) support. |
| 107 |
- Considerable code style cleanup to meet PEAR code standards. |
| 108 |
- Made a common library for HTTP-client access which uses available |
| 109 |
HTTP libraries where possible. |
| 110 |
- Added statuses/home_timeline method to API. |
| 111 |
- Hooks for plugins to handle notices offline, either by defining |
| 112 |
their own queue handler scripts or to use a default plugin queue |
| 113 |
handler script. |
| 114 |
- Plugins can now modify the database schema, adding their own tables |
| 115 |
or modifying existing ones. |
| 116 |
- Groups API. |
| 117 |
- Twitter API supports Web caching for some methods. |
| 118 |
- Twitter API refactored into one-action-per-method. |
| 119 |
- Realtime plugin supports a tear-off window. |
| 120 |
- FOAF for groups. |
| 121 |
- Moved all JavaScript tags to just before </body> by default, |
| 122 |
significantly speeding up apparent page load time. |
| 123 |
- Added a Realtime plugin for Orbited server. |
| 124 |
- Added a mobile plugin to give a more mobile-phone-friendly layout |
| 125 |
when a mobile browser is detected. |
| 126 |
- Use CSS sprites for most common icons. |
| 127 |
- Fixes for images and buttons on Web output. |
| 128 |
- New plugin requires that users validate their email before posting. |
| 129 |
- New plugin UserFlag lets users flag other profiles for review. |
| 130 |
- Considerably better i18n support. Use TranslateWiki to update |
| 131 |
translations. |
| 132 |
- Notices and profiles now store location information. |
| 133 |
- New plugin, Geonames, for turning location names and lat/long pairs |
| 134 |
into structured IDs and vice versa. Architecture reusable for other |
| 135 |
systems. |
| 136 |
- Better check of license compatibility between site licenses. |
| 137 |
- Some improvements in XMPP output. |
| 138 |
- Media upload in the API. |
| 139 |
- Replies appear in the user's inbox. |
| 140 |
- Improved the UI on the bookmarklet. |
| 141 |
- StatusNet identities can be used as OpenID identities. |
| 142 |
- Script to register a user. |
| 143 |
- Script to make someone a group admin. |
| 144 |
- Script to make someone a site admin or moderator. |
| 145 |
- 'login' command. |
| 146 |
- Pluggable authentication. |
| 147 |
- LDAP authentication plugin. |
| 148 |
- Script for console interaction with the site (!). |
| 149 |
- Users don't see group posts from people they've blocked. |
| 150 |
- Admin panel interface for changing site configuration. |
| 151 |
- Users can be sandboxed (limited contributions) or silenced |
| 152 |
(no contributions) by moderators. |
| 153 |
- Many changes to make language usage more consistent. |
| 154 |
- Sphinx search moved to a plugin. |
| 155 |
- GeoURL plugin. |
| 156 |
- Profile and group lists support hAtom. |
| 157 |
- Massive refactoring of util.js. |
| 158 |
- Mapstraction plugin to show maps on inbox and profile pages. |
| 159 |
- Play/pause buttons for realtime notices. |
| 160 |
- Support for geo microformat. |
| 161 |
- Partial support for feed subscriptions, RSSCloud, PubSubHubBub. |
| 162 |
- Support for geolocation in browser (Chrome, Firefox). |
| 163 |
- Quit trying to negotiate HTML format. Always use text/html. |
| 164 |
We lose, and so do Web standards. Boo. |
| 165 |
- Better logging of request info. |
| 166 |
- Better output for errors in Web interface. |
| 167 |
- No longer store .mo files; these need to be generated. |
| 168 |
- Minify plugin. |
| 169 |
- Events to allow pluginizing logger. |
| 170 |
- New framework for plugin localization. |
| 171 |
- Gravatar plugin. |
| 172 |
- Add support for "repeats" (similar to Twitter's "retweets"). |
| 173 |
- Support for repeats in Twitter API. |
| 174 |
- Better notification of direct messages. |
| 175 |
- New plugin to add "powered by StatusNet" to logo. |
| 176 |
- Returnto works for private sites. |
| 177 |
- Localisation updates, including new Persian translation. |
| 178 |
- CAS authentication plugin |
| 179 |
- Get rid of DB_DataObject native cache (big memory leaker) |
| 180 |
- setconfig.php script to set configuration variables |
| 181 |
- Blacklist plugin, to blacklist URLs and nicknames |
| 182 |
- Users can set flag whether they want to share location |
| 183 |
both in notice form (for one notice) and profile settings |
| 184 |
(any notice) |
| 185 |
- notice inboxes moved from normalized notice_inbox table to |
| 186 |
denormalized inbox table |
| 187 |
- Automatic compression of Memcache |
| 188 |
- Memory caching pluginized |
| 189 |
- Memcache, XCache, APC and Diskcache plugins |
| 190 |
- A script to update user locations |
| 191 |
- cache empty query results |
| 192 |
- A sample plugin to show best plugin practices |
| 193 |
- CacheLog plugin to debug cache accesses |
| 194 |
- Require users to login to view attachments on private sites |
| 195 |
- Plugin to use Mollom spam detection service |
| 196 |
- Plugin for RSSCloud |
| 197 |
- Add an array of default plugins |
| 198 |
- A version action to give credit to contributors and plugin |
| 199 |
developers |
| 200 |
- Daemon to read IMAP mailbox instead of using a mailbox script |
| 201 |
- Pass session information between SSL and non-SSL server |
| 202 |
when SSL set to 'sometimes' |
| 203 |
- Major refactoring of queue handlers to manage very |
| 204 |
large hosting site (like status.net) |
| 205 |
- SubscriptionThrottle plugin to prevent subscription spamming |
| 206 |
- Don't enqueue into plugin or SMS queues when disabled (breaks unqueuehandler if SMS queue isn't attached) |
| 207 |
- Improve name validation checks on local File references |
| 208 |
- fix local file include vulnerability in doc.php |
| 209 |
- Reusing fixed selector name for 'processing' in util.js |
| 210 |
- Removed hAtom pattern from registration page. |
| 211 |
- restructuring of User::registerNew() lost password munging |
| 212 |
- Add a script to clear the cache for a given key |
| 213 |
- buggy fetch for site owner |
| 214 |
- Added missing concat of </li> in Realtime response |
| 215 |
- Updated XHR binded events to work better in jQuery 1.4.1. Using .live() for event delegation instead of jQuery.data() and checking to see if an element was previously binded. |
| 216 |
- Updated jQuery Form Plugin from v2.17 to v2.36 |
| 217 |
- Updated jQuery JavaScript Library from v1.3.2 to v1.4.1 |
| 218 |
- move schema.type.php to typeschema.php like other files |
| 219 |
- Add Really Simple Discovery (RSD) support |
| 220 |
- Add a robots.txt URL to the site root |
| 221 |
- error clearing tags for profiles from memcached |
| 222 |
- on exceptions, stomp logs the error and reenqueues |
| 223 |
- add lat, lon, location and remove closing tag from geocode.php |
| 224 |
- Use passed-in lat long in geocode.php |
| 225 |
- better handling of null responses from geonames.org |
| 226 |
- Globalized form notice data geo values |
| 227 |
- Using jQuery chaining in FormNoticeXHR |
| 228 |
- Using form object instead of form_id and find(). Slightly faster and easier to read. |
| 229 |
- removed describeTable from base class, and fixed it up in pgsql |
| 230 |
- getTableDef() mostly working in postgres |
| 231 |
- move the schema DDL sql off into seperate files for each db we support |
| 232 |
- plugin to limit number of registered users |
| 233 |
- add hooks for user registration |
| 234 |
- live fast, die young in bash scripts |
| 235 |
- for single-user mode, retrieve either site owner or defined nickname |
| 236 |
- method to get the site owner |
| 237 |
- define a constant for the 'owner' role of a site |
| 238 |
- add simple cache getter/setter static functions to Memcached_DataObject |
| 239 |
- Adds notice author's name to @title in Realtime response |
| 240 |
- Hides .author from XHR response in showstream |
| 241 |
- Hides .author from XHR response in showstream |
| 242 |
- Fix more fatal errors in queue edge cases |
| 243 |
- Don't attempt to resend XMPP messages that can't be broadcast due to the profile being deleted. |
| 244 |
- Wrap each bit of distrib queue handler's saving operation in a try/catch; log exceptions but let everything else continue. |
| 245 |
- Log exceptions from queuedaemon.php if they're not already caught |
| 246 |
- Move sessions settings to its own panel |
| 247 |
- Fixes for status_network db object .ini and tag setter script |
| 248 |
- Add a script to set tags for sites |
| 249 |
- Adjust API authentication to also check for OAuth protocol params in the HTTP Authorization header, as defined in OAuth HTTP Authorization Scheme. |
| 250 |
- Last-chance distribution if enqueueing fails |
| 251 |
- Manual failover for stomp queues. |
| 252 |
- lost config in index.php made all traffic go to master |
| 253 |
- "Revert "move RW setup above user get in index.php so remember_me works"" |
| 254 |
- Revert "move RW setup above user get in index.php so remember_me works" |
| 255 |
- move RW setup above user get in index.php so remember_me works |
| 256 |
- hide most DB_DataObject errors |
| 257 |
- always set up database_rw, regardless, so cached sessions work |
| 258 |
- update mysqltimestamps on insert and update |
| 259 |
- additional debugging data for Sessions |
| 260 |
- 'Sign in with Twitter' button img |
| 261 |
- Update to biz theme |
| 262 |
- Remove redundant session token field from form (was already being added by base class). |
| 263 |
- 'Sign in with Twitter' button img |
| 264 |
- Can now set $config['queue']['stomp_persistent'] = false; to explicitly disable persistence when we queue items |
| 265 |
- Showing processing indicator for form_repeat on submit instead of form |
| 266 |
- Removed avatar from repeat of username (matches noticelist) |
| 267 |
- Removed unused variable assignment for avatar URL and added missing fn |
| 268 |
- Don't preemptively close existing DB connections for web views (needed to keep # of conns from going insane on multi-site queue daemons, so just doing for CLI) May, or may not, help with mystery session problems |
| 269 |
- dropping the setcookie() call from common_ensure_session() since we're pretty sure it's unnecessary |
| 270 |
- append '/' on cookie path for now (may still need some refactoring) |
| 271 |
- set session cookie correctly |
| 272 |
- Fix for Mapstraction plugin's zoomed map links |
| 273 |
- debug log line for control channel sub |
| 274 |
- Move faceboookapp.js to the Facebook plugin |
| 275 |
- fix for fix for bad realtime JS load |
| 276 |
- default 24-hour expiry on Memcached objects where not specified. |
| 277 |
|
| 278 |
Prerequisites |
| 279 |
============= |
| 280 |
|
| 281 |
The following software packages are *required* for this software to |
| 282 |
run correctly. |
| 283 |
|
| 284 |
- PHP 5.2.3+. It may be possible to run this software on earlier |
| 285 |
versions of PHP, but many of the functions used are only available |
| 286 |
in PHP 5.2 or above. |
| 287 |
- MySQL 5.x. The StatusNet database is stored, by default, in a MySQL |
| 288 |
server. It has been primarily tested on 5.x servers, although it may |
| 289 |
be possible to install on earlier (or later!) versions. The server |
| 290 |
*must* support the MyISAM storage engine -- the default for most |
| 291 |
MySQL servers -- *and* the InnoDB storage engine. |
| 292 |
- A Web server. Preferably, you should have Apache 2.2.x with the |
| 293 |
mod_rewrite extension installed and enabled. |
| 294 |
|
| 295 |
Your PHP installation must include the following PHP extensions: |
| 296 |
|
| 297 |
- Curl. This is for fetching files by HTTP. |
| 298 |
- XMLWriter. This is for formatting XML and HTML output. |
| 299 |
- MySQL. For accessing the database. |
| 300 |
- GD. For scaling down avatar images. |
| 301 |
- mbstring. For handling Unicode (UTF-8) encoded strings. |
| 302 |
- gettext. For multiple languages. Default on many PHP installs. |
| 303 |
|
| 304 |
For some functionality, you will also need the following extensions: |
| 305 |
|
| 306 |
- Memcache. A client for the memcached server, which caches database |
| 307 |
information in volatile memory. This is important for adequate |
| 308 |
performance on high-traffic sites. You will also need a memcached |
| 309 |
server to store the data in. |
| 310 |
- Mailparse. Efficient parsing of email requires this extension. |
| 311 |
Submission by email or SMS-over-email uses this extension. |
| 312 |
- Sphinx Search. A client for the sphinx server, an alternative |
| 313 |
to MySQL or Postgresql fulltext search. You will also need a |
| 314 |
Sphinx server to serve the search queries. |
| 315 |
|
| 316 |
You will almost definitely get 2-3 times better performance from your |
| 317 |
site if you install a PHP bytecode cache/accelerator. Some well-known |
| 318 |
examples are: eaccelerator, Turck mmcache, xcache, apc. Zend Optimizer |
| 319 |
is a proprietary accelerator installed on some hosting sites. |
| 320 |
|
| 321 |
External libraries |
| 322 |
------------------ |
| 323 |
|
| 324 |
A number of external PHP libraries are used to provide basic |
| 325 |
functionality and optional functionality for your system. For your |
| 326 |
convenience, they are available in the "extlib" directory of this |
| 327 |
package, and you do not have to download and install them. However, |
| 328 |
you may want to keep them up-to-date with the latest upstream version, |
| 329 |
and the URLs are listed here for your convenience. |
| 330 |
|
| 331 |
- DB_DataObject http://pear.php.net/package/DB_DataObject |
| 332 |
- Validate http://pear.php.net/package/Validate |
| 333 |
- OpenID from OpenIDEnabled (not the PEAR version!). We decided |
| 334 |
to use the openidenabled.com version since it's more widely |
| 335 |
implemented, and seems to be better supported. |
| 336 |
http://openidenabled.com/php-openid/ |
| 337 |
- PEAR DB. Although this is an older data access system (new |
| 338 |
packages should probably use PHP DBO), the OpenID libraries |
| 339 |
depend on PEAR DB so we use it here, too. DB_DataObject can |
| 340 |
also use PEAR MDB2, which may give you better performance |
| 341 |
but won't work with OpenID. |
| 342 |
http://pear.php.net/package/DB |
| 343 |
- OAuth.php from http://oauth.googlecode.com/svn/code/php/ |
| 344 |
- markdown.php from http://michelf.com/projects/php-markdown/ |
| 345 |
- PEAR Mail, for sending out mail notifications |
| 346 |
http://pear.php.net/package/Mail |
| 347 |
- PEAR Net_SMTP, if you use the SMTP factory for notifications |
| 348 |
http://pear.php.net/package/Net_SMTP |
| 349 |
- PEAR Net_Socket, if you use the SMTP factory for notifications |
| 350 |
http://pear.php.net/package/Net_Socket |
| 351 |
- XMPPHP, the follow-up to Class.Jabber.php. Probably the best XMPP |
| 352 |
library available for PHP. http://xmpphp.googlecode.com/. Note that |
| 353 |
as of this writing the version of this library that is available in |
| 354 |
the extlib directory is *significantly different* from the upstream |
| 355 |
version (patches have been submitted). Upgrading to the upstream |
| 356 |
version may render your StatusNet site unable to send or receive XMPP |
| 357 |
messages. |
| 358 |
- Facebook library. Used for the Facebook application. |
| 359 |
- PEAR Services_oEmbed. Used for some multimedia integration. |
| 360 |
- PEAR HTTP_Request is an oEmbed dependency. |
| 361 |
- PEAR Validate is an oEmbed dependency. |
| 362 |
- PEAR Net_URL2 is an oEmbed dependency. |
| 363 |
- Console_GetOpt for parsing command-line options. |
| 364 |
|
| 365 |
A design goal of StatusNet is that the basic Web functionality should |
| 366 |
work on even the most restrictive commercial hosting services. |
| 367 |
However, additional functionality, such as receiving messages by |
| 368 |
Jabber/GTalk, require that you be able to run long-running processes |
| 369 |
on your account. In addition, posting by email or from SMS require |
| 370 |
that you be able to install a mail filter in your mail server. |
| 371 |
|
| 372 |
Installation |
| 373 |
============ |
| 374 |
|
| 375 |
Installing the basic StatusNet Web component is relatively easy, |
| 376 |
especially if you've previously installed PHP/MySQL packages. |
| 377 |
|
| 378 |
1. Unpack the tarball you downloaded on your Web server. Usually a |
| 379 |
command like this will work: |
| 380 |
|
| 381 |
tar zxf statusnet-0.8.2.tar.gz |
| 382 |
|
| 383 |
...which will make a statusnet-0.8.2 subdirectory in your current |
| 384 |
directory. (If you don't have shell access on your Web server, you |
| 385 |
may have to unpack the tarball on your local computer and FTP the |
| 386 |
files to the server.) |
| 387 |
|
| 388 |
2. Move the tarball to a directory of your choosing in your Web root |
| 389 |
directory. Usually something like this will work: |
| 390 |
|
| 391 |
mv statusnet-0.8.2 /var/www/mublog |
| 392 |
|
| 393 |
This will make your StatusNet instance available in the mublog path of |
| 394 |
your server, like "http://example.net/mublog". "microblog" or |
| 395 |
"statusnet" might also be good path names. If you know how to |
| 396 |
configure virtual hosts on your web server, you can try setting up |
| 397 |
"http://micro.example.net/" or the like. |
| 398 |
|
| 399 |
3. Make your target directory writeable by the Web server. |
| 400 |
|
| 401 |
chmod a+w /var/www/mublog/ |
| 402 |
|
| 403 |
On some systems, this will probably work: |
| 404 |
|
| 405 |
chgrp www-data /var/www/mublog/ |
| 406 |
chmod g+w /var/www/mublog/ |
| 407 |
|
| 408 |
If your Web server runs as another user besides "www-data", try |
| 409 |
that user's default group instead. As a last resort, you can create |
| 410 |
a new group like "mublog" and add the Web server's user to the group. |
| 411 |
|
| 412 |
4. You should also take this moment to make your avatar, background, and |
| 413 |
file subdirectories writeable by the Web server. An insecure way to do |
| 414 |
this is: |
| 415 |
|
| 416 |
chmod a+w /var/www/mublog/avatar |
| 417 |
chmod a+w /var/www/mublog/background |
| 418 |
chmod a+w /var/www/mublog/file |
| 419 |
|
| 420 |
You can also make the avatar, background, and file directories |
| 421 |
writeable by the Web server group, as noted above. |
| 422 |
|
| 423 |
5. Create a database to hold your microblog data. Something like this |
| 424 |
should work: |
| 425 |
|
| 426 |
mysqladmin -u "username" --password="password" create statusnet |
| 427 |
|
| 428 |
Note that StatusNet must have its own database; you can't share the |
| 429 |
database with another program. You can name it whatever you want, |
| 430 |
though. |
| 431 |
|
| 432 |
(If you don't have shell access to your server, you may need to use |
| 433 |
a tool like PHPAdmin to create a database. Check your hosting |
| 434 |
service's documentation for how to create a new MySQL database.) |
| 435 |
|
| 436 |
6. Create a new database account that StatusNet will use to access the |
| 437 |
database. If you have shell access, this will probably work from the |
| 438 |
MySQL shell: |
| 439 |
|
| 440 |
GRANT ALL on statusnet.* |
| 441 |
TO 'lacuser'@'localhost' |
| 442 |
IDENTIFIED BY 'lacpassword'; |
| 443 |
|
| 444 |
You should change 'lacuser' and 'lacpassword' to your preferred new |
| 445 |
username and password. You may want to test logging in to MySQL as |
| 446 |
this new user. |
| 447 |
|
| 448 |
7. In a browser, navigate to the StatusNet install script; something like: |
| 449 |
|
| 450 |
http://yourserver.example.com/mublog/install.php |
| 451 |
|
| 452 |
Enter the database connection information and your site name. The |
| 453 |
install program will configure your site and install the initial, |
| 454 |
almost-empty database. |
| 455 |
|
| 456 |
8. You should now be able to navigate to your microblog's main directory |
| 457 |
and see the "Public Timeline", which will be empty. If not, magic |
| 458 |
has happened! You can now register a new user, post some notices, |
| 459 |
edit your profile, etc. However, you may want to wait to do that stuff |
| 460 |
if you think you can set up "fancy URLs" (see below), since some |
| 461 |
URLs are stored in the database. |
| 462 |
|
| 463 |
Fancy URLs |
| 464 |
---------- |
| 465 |
|
| 466 |
By default, StatusNet will use URLs that include the main PHP program's |
| 467 |
name in them. For example, a user's home profile might be |
| 468 |
found at: |
| 469 |
|
| 470 |
http://example.org/mublog/index.php/mublog/fred |
| 471 |
|
| 472 |
On certain systems that don't support this kind of syntax, they'll |
| 473 |
look like this: |
| 474 |
|
| 475 |
http://example.org/mublog/index.php?p=mublog/fred |
| 476 |
|
| 477 |
It's possible to configure the software so it looks like this instead: |
| 478 |
|
| 479 |
http://example.org/mublog/fred |
| 480 |
|
| 481 |
These "fancy URLs" are more readable and memorable for users. To use |
| 482 |
fancy URLs, you must either have Apache 2.x with .htaccess enabled and |
| 483 |
mod_rewrite enabled, -OR- know how to configure "url redirection" in |
| 484 |
your server. |
| 485 |
|
| 486 |
1. Copy the htaccess.sample file to .htaccess in your StatusNet |
| 487 |
directory. Note: if you have control of your server's httpd.conf or |
| 488 |
similar configuration files, it can greatly improve performance to |
| 489 |
import the .htaccess file into your conf file instead. If you're |
| 490 |
not sure how to do it, you may save yourself a lot of headache by |
| 491 |
just leaving the .htaccess file. |
| 492 |
|
| 493 |
2. Change the "RewriteBase" in the new .htaccess file to be the URL path |
| 494 |
to your StatusNet installation on your server. Typically this will |
| 495 |
be the path to your StatusNet directory relative to your Web root. |
| 496 |
|
| 497 |
3. Add or uncomment or change a line in your config.php file so it says: |
| 498 |
|
| 499 |
$config['site']['fancy'] = true; |
| 500 |
|
| 501 |
You should now be able to navigate to a "fancy" URL on your server, |
| 502 |
like: |
| 503 |
|
| 504 |
http://example.net/mublog/main/register |
| 505 |
|
| 506 |
If you changed your HTTP server configuration, you may need to restart |
| 507 |
the server first. |
| 508 |
|
| 509 |
If it doesn't work, double-check that AllowOverride for the StatusNet |
| 510 |
directory is 'All' in your Apache configuration file. This is usually |
| 511 |
/etc/httpd.conf, /etc/apache/httpd.conf, or (on Debian and Ubuntu) |
| 512 |
/etc/apache2/sites-available/default. See the Apache documentation for |
| 513 |
.htaccess files for more details: |
| 514 |
|
| 515 |
http://httpd.apache.org/docs/2.2/howto/htaccess.html |
| 516 |
|
| 517 |
Also, check that mod_rewrite is installed and enabled: |
| 518 |
|
| 519 |
http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html |
| 520 |
|
| 521 |
Sphinx |
| 522 |
------ |
| 523 |
|
| 524 |
To use a Sphinx server to search users and notices, you'll need to |
| 525 |
enable the SphinxSearch plugin. Add to your config.php: |
| 526 |
|
| 527 |
addPlugin('SphinxSearch'); |
| 528 |
$config['sphinx']['server'] = 'searchhost.local'; |
| 529 |
|
| 530 |
You also need to install, compile and enable the sphinx pecl extension for |
| 531 |
php on the client side, which itself depends on the sphinx development files. |
| 532 |
|
| 533 |
See plugins/SphinxSearch/README for more details and server setup. |
| 534 |
|
| 535 |
SMS |
| 536 |
--- |
| 537 |
|
| 538 |
StatusNet supports a cheap-and-dirty system for sending update messages |
| 539 |
to mobile phones and for receiving updates from the mobile. Instead of |
| 540 |
sending through the SMS network itself, which is costly and requires |
| 541 |
buy-in from the wireless carriers, it simply piggybacks on the email |
| 542 |
gateways that many carriers provide to their customers. So, SMS |
| 543 |
configuration is essentially email configuration. |
| 544 |
|
| 545 |
Each user sends to a made-up email address, which they keep a secret. |
| 546 |
Incoming email that is "From" the user's SMS email address, and "To" |
| 547 |
the users' secret email address on the site's domain, will be |
| 548 |
converted to a notice and stored in the DB. |
| 549 |
|
| 550 |
For this to work, there *must* be a domain or sub-domain for which all |
| 551 |
(or most) incoming email can pass through the incoming mail filter. |
| 552 |
|
| 553 |
1. Run the SQL script carrier.sql in your StatusNet database. This will |
| 554 |
usually work: |
| 555 |
|
| 556 |
mysql -u "lacuser" --password="lacpassword" statusnet < db/carrier.sql |
| 557 |
|
| 558 |
This will populate your database with a list of wireless carriers |
| 559 |
that support email SMS gateways. |
| 560 |
|
| 561 |
2. Make sure the maildaemon.php file is executable: |
| 562 |
|
| 563 |
chmod +x scripts/maildaemon.php |
| 564 |
|
| 565 |
Note that "daemon" is kind of a misnomer here; the script is more |
| 566 |
of a filter than a daemon. |
| 567 |
|
| 568 |
2. Edit /etc/aliases on your mail server and add the following line: |
| 569 |
|
| 570 |
*: /path/to/statusnet/scripts/maildaemon.php |
| 571 |
|
| 572 |
3. Run whatever code you need to to update your aliases database. For |
| 573 |
many mail servers (Postfix, Exim, Sendmail), this should work: |
| 574 |
|
| 575 |
newaliases |
| 576 |
|
| 577 |
You may need to restart your mail server for the new database to |
| 578 |
take effect. |
| 579 |
|
| 580 |
4. Set the following in your config.php file: |
| 581 |
|
| 582 |
$config['mail']['domain'] = 'yourdomain.example.net'; |
| 583 |
|
| 584 |
At this point, post-by-email and post-by-SMS-gateway should work. Note |
| 585 |
that if your mail server is on a different computer from your email |
| 586 |
server, you'll need to have a full installation of StatusNet, a working |
| 587 |
config.php, and access to the StatusNet database from the mail server. |
| 588 |
|
| 589 |
XMPP |
| 590 |
---- |
| 591 |
|
| 592 |
XMPP (eXtended Message and Presence Protocol, <http://xmpp.org/>) is the |
| 593 |
instant-messenger protocol that drives Jabber and GTalk IM. You can |
| 594 |
distribute messages via XMPP using the system below; however, you |
| 595 |
need to run the XMPP incoming daemon to allow incoming messages as |
| 596 |
well. |
| 597 |
|
| 598 |
1. You may want to strongly consider setting up your own XMPP server. |
| 599 |
Ejabberd, OpenFire, and JabberD are all Open Source servers. |
| 600 |
Jabber, Inc. provides a high-performance commercial server. |
| 601 |
|
| 602 |
2. You must register a Jabber ID (JID) with your new server. It helps |
| 603 |
to choose a name like "update@example.com" or "notice" or something |
| 604 |
similar. Alternately, your "update JID" can be registered on a |
| 605 |
publicly-available XMPP service, like jabber.org or GTalk. |
| 606 |
|
| 607 |
StatusNet will not register the JID with your chosen XMPP server; |
| 608 |
you need to do this manually, with an XMPP client like Gajim, |
| 609 |
Telepathy, or Pidgin.im. |
| 610 |
|
| 611 |
3. Configure your site's XMPP variables, as described below in the |
| 612 |
configuration section. |
| 613 |
|
| 614 |
On a default installation, your site can broadcast messages using |
| 615 |
XMPP. Users won't be able to post messages using XMPP unless you've |
| 616 |
got the XMPP daemon running. See 'Queues and daemons' below for how |
| 617 |
to set that up. Also, once you have a sizable number of users, sending |
| 618 |
a lot of SMS, OMB, and XMPP messages whenever someone posts a message |
| 619 |
can really slow down your site; it may cause posting to timeout. |
| 620 |
|
| 621 |
NOTE: stream_select(), a crucial function for network programming, is |
| 622 |
broken on PHP 5.2.x less than 5.2.6 on amd64-based servers. We don't |
| 623 |
work around this bug in StatusNet; current recommendation is to move |
| 624 |
off of amd64 to another server. |
| 625 |
|
| 626 |
Public feed |
| 627 |
----------- |
| 628 |
|
| 629 |
You can send *all* messages from your microblogging site to a |
| 630 |
third-party service using XMPP. This can be useful for providing |
| 631 |
search, indexing, bridging, or other cool services. |
| 632 |
|
| 633 |
To configure a downstream site to receive your public stream, add |
| 634 |
their "JID" (Jabber ID) to your config.php as follows: |
| 635 |
|
| 636 |
$config['xmpp']['public'][] = 'downstream@example.net'; |
| 637 |
|
| 638 |
(Don't miss those square brackets at the end.) Note that your XMPP |
| 639 |
broadcasting must be configured as mentioned above. Although you can |
| 640 |
send out messages at "Web time", high-volume sites should strongly |
| 641 |
consider setting up queues and daemons. |
| 642 |
|
| 643 |
Queues and daemons |
| 644 |
------------------ |
| 645 |
|
| 646 |
Some activities that StatusNet needs to do, like broadcast OMB, SMS, |
| 647 |
and XMPP messages, can be 'queued' and done by off-line bots instead. |
| 648 |
For this to work, you must be able to run long-running offline |
| 649 |
processes, either on your main Web server or on another server you |
| 650 |
control. (Your other server will still need all the above |
| 651 |
prerequisites, with the exception of Apache.) Installing on a separate |
| 652 |
server is probably a good idea for high-volume sites. |
| 653 |
|
| 654 |
1. You'll need the "CLI" (command-line interface) version of PHP |
| 655 |
installed on whatever server you use. |
| 656 |
|
| 657 |
2. If you're using a separate server for queues, install StatusNet |
| 658 |
somewhere on the server. You don't need to worry about the |
| 659 |
.htaccess file, but make sure that your config.php file is close |
| 660 |
to, or identical to, your Web server's version. |
| 661 |
|
| 662 |
3. In your config.php files (both the Web server and the queues |
| 663 |
server!), set the following variable: |
| 664 |
|
| 665 |
$config['queue']['enabled'] = true; |
| 666 |
|
| 667 |
You may also want to look at the 'daemon' section of this file for |
| 668 |
more daemon options. Note that if you set the 'user' and/or 'group' |
| 669 |
options, you'll need to create that user and/or group by hand. |
| 670 |
They're not created automatically. |
| 671 |
|
| 672 |
4. On the queues server, run the command scripts/startdaemons.sh. It |
| 673 |
needs as a parameter the install path; if you run it from the |
| 674 |
StatusNet dir, "." should suffice. |
| 675 |
|
| 676 |
This will run the queue handlers: |
| 677 |
|
| 678 |
* queuedaemon.php - polls for queued items for inbox processing and |
| 679 |
pushing out to OMB, SMS, XMPP, etc. |
| 680 |
* xmppdaemon.php - listens for new XMPP messages from users and stores |
| 681 |
them as notices in the database; also pulls queued XMPP output from |
| 682 |
queuedaemon.php to push out to clients. |
| 683 |
|
| 684 |
These two daemons will automatically restart in most cases of failure |
| 685 |
including memory leaks (if a memory_limit is set), but may still die |
| 686 |
or behave oddly if they lose connections to the XMPP or queue servers. |
| 687 |
|
| 688 |
It may be a good idea to use a daemon-monitoring service, like 'monit', |
| 689 |
to check their status and keep them running. |
| 690 |
|
| 691 |
All the daemons write their process IDs (pids) to /var/run/ by |
| 692 |
default. This can be useful for starting, stopping, and monitoring the |
| 693 |
daemons. |
| 694 |
|
| 695 |
Since version 0.8.0, it's now possible to use a STOMP server instead of |
| 696 |
our kind of hacky home-grown DB-based queue solution. See the "queues" |
| 697 |
config section below for how to configure to use STOMP. As of this |
| 698 |
writing, the software has been tested with ActiveMQ. |
| 699 |
|
| 700 |
Sitemaps |
| 701 |
-------- |
| 702 |
|
| 703 |
Sitemap files <http://sitemaps.org/> are a very nice way of telling |
| 704 |
search engines and other interested bots what's available on your site |
| 705 |
and what's changed recently. You can generate sitemap files for your |
| 706 |
StatusNet instance. |
| 707 |
|
| 708 |
1. Choose your sitemap URL layout. StatusNet creates a number of |
| 709 |
sitemap XML files for different parts of your site. You may want to |
| 710 |
put these in a sub-directory of your StatusNet directory to avoid |
| 711 |
clutter. The sitemap index file tells the search engines and other |
| 712 |
bots where to find all the sitemap files; it *must* be in the main |
| 713 |
installation directory or higher. Both types of file must be |
| 714 |
available through HTTP. |
| 715 |
|
| 716 |
2. To generate your sitemaps, run the following command on your server: |
| 717 |
|
| 718 |
php scripts/sitemap.php -f index-file-path -d sitemap-directory -u URL-prefix-for-sitemaps |
| 719 |
|
| 720 |
Here, index-file-path is the full path to the sitemap index file, |
| 721 |
like './sitemapindex.xml'. sitemap-directory is the directory where |
| 722 |
you want the sitemaps stored, like './sitemaps/' (make sure the dir |
| 723 |
exists). URL-prefix-for-sitemaps is the full URL for the sitemap dir, |
| 724 |
typically something like <http://example.net/mublog/sitemaps/>. |
| 725 |
|
| 726 |
You can use several methods for submitting your sitemap index to |
| 727 |
search engines to get your site indexed. One is to add a line like the |
| 728 |
following to your robots.txt file: |
| 729 |
|
| 730 |
Sitemap: /mublog/sitemapindex.xml |
| 731 |
|
| 732 |
This is a good idea for letting *all* Web spiders know about your |
| 733 |
sitemap. You can also submit sitemap files to major search engines |
| 734 |
using their respective "Webmaster centres"; see sitemaps.org for links |
| 735 |
to these resources. |
| 736 |
|
| 737 |
Themes |
| 738 |
------ |
| 739 |
|
| 740 |
There are two themes shipped with this version of StatusNet: "identica", |
| 741 |
which is what the Identi.ca site uses, and "default", which is a good |
| 742 |
basis for other sites. |
| 743 |
|
| 744 |
As of right now, your ability to change the theme is site-wide; users |
| 745 |
can't choose their own theme. Additionally, the only thing you can |
| 746 |
change in the theme is CSS stylesheets and some image files; you can't |
| 747 |
change the HTML output, like adding or removing menu items. |
| 748 |
|
| 749 |
You can choose a theme using the $config['site']['theme'] element in |
| 750 |
the config.php file. See below for details. |
| 751 |
|
| 752 |
You can add your own theme by making a sub-directory of the 'theme' |
| 753 |
subdirectory with the name of your theme. Each theme can have the |
| 754 |
following files: |
| 755 |
|
| 756 |
display.css: a CSS2 file for "default" styling for all browsers. |
| 757 |
ie6.css: a CSS2 file for override styling for fixing up Internet |
| 758 |
Explorer 6. |
| 759 |
ie7.css: a CSS2 file for override styling for fixing up Internet |
| 760 |
Explorer 7. |
| 761 |
logo.png: a logo image for the site. |
| 762 |
default-avatar-profile.png: a 96x96 pixel image to use as the avatar for |
| 763 |
users who don't upload their own. |
| 764 |
default-avatar-stream.png: Ditto, but 48x48. For streams of notices. |
| 765 |
default-avatar-mini.png: Ditto ditto, but 24x24. For subscriptions |
| 766 |
listing on profile pages. |
| 767 |
|
| 768 |
You may want to start by copying the files from the default theme to |
| 769 |
your own directory. |
| 770 |
|
| 771 |
NOTE: the HTML generated by StatusNet changed *radically* between |
| 772 |
version 0.6.x and 0.7.x. Older themes will need signification |
| 773 |
modification to use the new output format. |
| 774 |
|
| 775 |
Translation |
| 776 |
----------- |
| 777 |
|
| 778 |
Translations in StatusNet use the gettext system <http://www.gnu.org/software/gettext/>. |
| 779 |
Theoretically, you can add your own sub-directory to the locale/ |
| 780 |
subdirectory to add a new language to your system. You'll need to |
| 781 |
compile the ".po" files into ".mo" files, however. |
| 782 |
|
| 783 |
Contributions of translation information to StatusNet are very easy: |
| 784 |
you can use the Web interface at TranslateWiki.net to add one |
| 785 |
or a few or lots of new translations -- or even new languages. You can |
| 786 |
also download more up-to-date .po files there, if you so desire. |
| 787 |
|
| 788 |
For info on helping with translations, see http://status.net/wiki/Translations |
| 789 |
|
| 790 |
Backups |
| 791 |
------- |
| 792 |
|
| 793 |
There is no built-in system for doing backups in StatusNet. You can make |
| 794 |
backups of a working StatusNet system by backing up the database and |
| 795 |
the Web directory. To backup the database use mysqldump <http://ur1.ca/7xo> |
| 796 |
and to backup the Web directory, try tar. |
| 797 |
|
| 798 |
Private |
| 799 |
------- |
| 800 |
|
| 801 |
The administrator can set the "private" flag for a site so that it's |
| 802 |
not visible to non-logged-in users. This might be useful for |
| 803 |
workgroups who want to share a microblogging site for project |
| 804 |
management, but host it on a public server. |
| 805 |
|
| 806 |
Note that this is an experimental feature; total privacy is not |
| 807 |
guaranteed or ensured. Also, privacy is all-or-nothing for a site; you |
| 808 |
can't have some accounts or notices private, and others public. |
| 809 |
Finally, the interaction of private sites with OpenMicroBlogging is |
| 810 |
undefined. Remote users won't be able to subscribe to users on a |
| 811 |
private site, but users of the private site may be able to subscribe |
| 812 |
to users on a remote site. (Or not... it's not well tested.) The |
| 813 |
"proper behaviour" hasn't been defined here, so handle with care. |
| 814 |
|
| 815 |
Access to file attachments can also be restricted to logged-in users only. |
| 816 |
1. Add a directory outside the web root where your file uploads will be |
| 817 |
stored. Usually a command like this will work: |
| 818 |
|
| 819 |
mkdir /var/www/mublog-files |
| 820 |
|
| 821 |
2. Make the file uploads directory writeable by the web server. An |
| 822 |
insecure way to do this is: |
| 823 |
|
| 824 |
chmod a+x /var/www/mublog-files |
| 825 |
|
| 826 |
3. Tell StatusNet to use this directory for file uploads. Add a line |
| 827 |
like this to your config.php: |
| 828 |
|
| 829 |
$config['attachments']['dir'] = '/var/www/mublog-files'; |
| 830 |
|
| 831 |
Upgrading |
| 832 |
========= |
| 833 |
|
| 834 |
IMPORTANT NOTE: StatusNet 0.7.4 introduced a fix for some |
| 835 |
incorrectly-stored international characters ("UTF-8"). For new |
| 836 |
installations, it will now store non-ASCII characters correctly. |
| 837 |
However, older installations will have the incorrect storage, and will |
| 838 |
consequently show up "wrong" in browsers. See below for how to deal |
| 839 |
with this situation. |
| 840 |
|
| 841 |
If you've been using StatusNet 0.7, 0.6, 0.5 or lower, or if you've |
| 842 |
been tracking the "git" version of the software, you will probably |
| 843 |
want to upgrade and keep your existing data. There is no automated |
| 844 |
upgrade procedure in StatusNet 0.8.2. Try these step-by-step |
| 845 |
instructions; read to the end first before trying them. |
| 846 |
|
| 847 |
0. Download StatusNet and set up all the prerequisites as if you were |
| 848 |
doing a new install. |
| 849 |
1. Make backups of both your database and your Web directory. UNDER NO |
| 850 |
CIRCUMSTANCES should you try to do an upgrade without a known-good |
| 851 |
backup. You have been warned. |
| 852 |
2. Shut down Web access to your site, either by turning off your Web |
| 853 |
server or by redirecting all pages to a "sorry, under maintenance" |
| 854 |
page. |
| 855 |
3. Shut down XMPP access to your site, typically by shutting down the |
| 856 |
xmppdaemon.php process and all other daemons that you're running. |
| 857 |
If you've got "monit" or "cron" automatically restarting your |
| 858 |
daemons, make sure to turn that off, too. |
| 859 |
4. Shut down SMS and email access to your site. The easy way to do |
| 860 |
this is to comment out the line piping incoming email to your |
| 861 |
maildaemon.php file, and running something like "newaliases". |
| 862 |
5. Once all writing processes to your site are turned off, make a |
| 863 |
final backup of the Web directory and database. |
| 864 |
6. Move your StatusNet directory to a backup spot, like "mublog.bak". |
| 865 |
7. Unpack your StatusNet 0.8.2 tarball and move it to "mublog" or |
| 866 |
wherever your code used to be. |
| 867 |
8. Copy the config.php file and avatar directory from your old |
| 868 |
directory to your new directory. |
| 869 |
9. Copy htaccess.sample to .htaccess in the new directory. Change the |
| 870 |
RewriteBase to use the correct path. |
| 871 |
10. Rebuild the database. (You can safely skip this step and go to #12 |
| 872 |
if you're upgrading from another 0.8.x version). |
| 873 |
|
| 874 |
NOTE: this step is destructive and cannot be |
| 875 |
reversed. YOU CAN EASILY DESTROY YOUR SITE WITH THIS STEP. Don't |
| 876 |
do it without a known-good backup! |
| 877 |
|
| 878 |
If your database is at version 0.7.4, you can run a special upgrade |
| 879 |
script: |
| 880 |
|
| 881 |
mysql -u<rootuser> -p<rootpassword> <database> db/074to080.sql |
| 882 |
|
| 883 |
Otherwise, go to your StatusNet directory and AFTER YOU MAKE A |
| 884 |
BACKUP run the rebuilddb.sh script like this: |
| 885 |
|
| 886 |
./scripts/rebuilddb.sh rootuser rootpassword database db/statusnet.sql |
| 887 |
|
| 888 |
Here, rootuser and rootpassword are the username and password for a |
| 889 |
user who can drop and create databases as well as tables; typically |
| 890 |
that's _not_ the user StatusNet runs as. Note that rebuilddb.sh drops |
| 891 |
your database and rebuilds it; if there is an error you have no |
| 892 |
database. Make sure you have a backup. |
| 893 |
For PostgreSQL databases there is an equivalent, rebuilddb_psql.sh, |
| 894 |
which operates slightly differently. Read the documentation in that |
| 895 |
script before running it. |
| 896 |
11. Use mysql or psql client to log into your database and make sure that |
| 897 |
the notice, user, profile, subscription etc. tables are non-empty. |
| 898 |
12. Turn back on the Web server, and check that things still work. |
| 899 |
13. Turn back on XMPP bots and email maildaemon. Note that the XMPP |
| 900 |
bots have changed since version 0.5; see above for details. |
| 901 |
|
| 902 |
If you're upgrading from very old versions, you may want to look at |
| 903 |
the fixup_* scripts in the scripts directories. These will store some |
| 904 |
precooked data in the DB. All upgraders should check out the inboxes |
| 905 |
options below. |
| 906 |
|
| 907 |
NOTE: the database definition file, laconica.ini, has been renamed to |
| 908 |
statusnet.ini (since this is the recommended database name). If you |
| 909 |
have a line in your config.php pointing to the old name, you'll need |
| 910 |
to update it. |
| 911 |
|
| 912 |
Notice inboxes |
| 913 |
-------------- |
| 914 |
|
| 915 |
Notice inboxes are now required. If you don't have inboxes enabled, |
| 916 |
StatusNet will no longer run. |
| 917 |
|
| 918 |
UTF-8 Database |
| 919 |
-------------- |
| 920 |
|
| 921 |
StatusNet 0.7.4 introduced a fix for some incorrectly-stored |
| 922 |
international characters ("UTF-8"). This fix is not |
| 923 |
backwards-compatible; installations from before 0.7.4 will show |
| 924 |
non-ASCII characters of old notices incorrectly. This section explains |
| 925 |
what to do. |
| 926 |
|
| 927 |
0. You can disable the new behaviour by setting the 'db''utf8' config |
| 928 |
option to "false". You should only do this until you're ready to |
| 929 |
convert your DB to the new format. |
| 930 |
1. When you're ready to convert, you can run the fixup_utf8.php script |
| 931 |
in the scripts/ subdirectory. If you've had the "new behaviour" |
| 932 |
enabled (probably a good idea), you can give the ID of the first |
| 933 |
"new" notice as a parameter, and only notices before that one will |
| 934 |
be converted. Notices are converted in reverse chronological order, |
| 935 |
so the most recent (and visible) ones will be converted first. The |
| 936 |
script should work whether or not you have the 'db''utf8' config |
| 937 |
option enabled. |
| 938 |
2. When you're ready, set $config['db']['utf8'] to true, so that |
| 939 |
new notices will be stored correctly. |
| 940 |
|
| 941 |
Configuration options |
| 942 |
===================== |
| 943 |
|
| 944 |
The main configuration file for StatusNet (excepting configurations for |
| 945 |
dependency software) is config.php in your StatusNet directory. If you |
| 946 |
edit any other file in the directory, like lib/common.php (where most |
| 947 |
of the defaults are defined), you will lose your configuration options |
| 948 |
in any upgrade, and you will wish that you had been more careful. |
| 949 |
|
| 950 |
Starting with version 0.7.1, you can put config files in the |
| 951 |
/etc/statusnet/ directory on your server, if it exists. Config files |
| 952 |
will be included in this order: |
| 953 |
|
| 954 |
* /etc/statusnet/statusnet.php - server-wide config |
| 955 |
* /etc/statusnet/<servername>.php - for a virtual host |
| 956 |
* /etc/statusnet/<servername>_<pathname>.php - for a path |
| 957 |
* INSTALLDIR/config.php - for a particular implementation |
| 958 |
|
| 959 |
Almost all configuration options are made through a two-dimensional |
| 960 |
associative array, cleverly named $config. A typical configuration |
| 961 |
line will be: |
| 962 |
|
| 963 |
$config['section']['option'] = value; |
| 964 |
|
| 965 |
For brevity, the following documentation describes each section and |
| 966 |
option. |
| 967 |
|
| 968 |
site |
| 969 |
---- |
| 970 |
|
| 971 |
This section is a catch-all for site-wide variables. |
| 972 |
|
| 973 |
name: the name of your site, like 'YourCompany Microblog'. |
| 974 |
server: the server part of your site's URLs, like 'example.net'. |
| 975 |
path: The path part of your site's URLs, like 'mublog' or '' |
| 976 |
(installed in root). |
| 977 |
fancy: whether or not your site uses fancy URLs (see Fancy URLs |
| 978 |
section above). Default is false. |
| 979 |
logfile: full path to a file for StatusNet to save logging |
| 980 |
information to. You may want to use this if you don't have |
| 981 |
access to syslog. |
| 982 |
logdebug: whether to log additional debug info like backtraces on |
| 983 |
hard errors. Default false. |
| 984 |
locale_path: full path to the directory for locale data. Unless you |
| 985 |
store all your locale data in one place, you probably |
| 986 |
don't need to use this. |
| 987 |
language: default language for your site. Defaults to US English. |
| 988 |
Note that this is overridden if a user is logged in and has |
| 989 |
selected a different language. It is also overridden if the |
| 990 |
user is NOT logged in, but their browser requests a different |
| 991 |
langauge. Since pretty much everybody's browser requests a |
| 992 |
language, that means that changing this setting has little or |
| 993 |
no effect in practice. |
| 994 |
languages: A list of languages supported on your site. Typically you'd |
| 995 |
only change this if you wanted to disable support for one |
| 996 |
or another language: |
| 997 |
"unset($config['site']['languages']['de'])" will disable |
| 998 |
support for German. |
| 999 |
theme: Theme for your site (see Theme section). Two themes are |
| 1000 |
provided by default: 'default' and 'stoica' (the one used by |
| 1001 |
Identi.ca). It's appreciated if you don't use the 'stoica' theme |
| 1002 |
except as the basis for your own. |
| 1003 |
email: contact email address for your site. By default, it's extracted |
| 1004 |
from your Web server environment; you may want to customize it. |
| 1005 |
broughtbyurl: name of an organization or individual who provides the |
| 1006 |
service. Each page will include a link to this name in the |
| 1007 |
footer. A good way to link to the blog, forum, wiki, |
| 1008 |
corporate portal, or whoever is making the service available. |
| 1009 |
broughtby: text used for the "brought by" link. |
| 1010 |
timezone: default timezone for message display. Users can set their |
| 1011 |
own time zone. Defaults to 'UTC', which is a pretty good default. |
| 1012 |
closed: If set to 'true', will disallow registration on your site. |
| 1013 |
This is a cheap way to restrict accounts to only one |
| 1014 |
individual or group; just register the accounts you want on |
| 1015 |
the service, *then* set this variable to 'true'. |
| 1016 |
inviteonly: If set to 'true', will only allow registration if the user |
| 1017 |
was invited by an existing user. |
| 1018 |
private: If set to 'true', anonymous users will be redirected to the |
| 1019 |
'login' page. Also, API methods that normally require no |
| 1020 |
authentication will require it. Note that this does not turn |
| 1021 |
off registration; use 'closed' or 'inviteonly' for the |
| 1022 |
behaviour you want. |
| 1023 |
notice: A plain string that will appear on every page. A good place |
| 1024 |
to put introductory information about your service, or info about |
| 1025 |
upgrades and outages, or other community info. Any HTML will |
| 1026 |
be escaped. |
| 1027 |
logo: URL of an image file to use as the logo for the site. Overrides |
| 1028 |
the logo in the theme, if any. |
| 1029 |
ssl: Whether to use SSL and https:// URLs for some or all pages. |
| 1030 |
Possible values are 'always' (use it for all pages), 'never' |
| 1031 |
(don't use it for any pages), or 'sometimes' (use it for |
| 1032 |
sensitive pages that include passwords like login and registration, |
| 1033 |
but not for regular pages). Default to 'never'. |
| 1034 |
sslserver: use an alternate server name for SSL URLs, like |
| 1035 |
'secure.example.org'. You should be careful to set cookie |
| 1036 |
parameters correctly so that both the SSL server and the |
| 1037 |
"normal" server can access the session cookie and |
| 1038 |
preferably other cookies as well. |
| 1039 |
shorturllength: Length of URL at which URLs in a message exceeding 140 |
| 1040 |
characters will be sent to the user's chosen |
| 1041 |
shortening service. |
| 1042 |
dupelimit: minimum time allowed for one person to say the same thing |
| 1043 |
twice. Default 60s. Anything lower is considered a user |
| 1044 |
or UI error. |
| 1045 |
textlimit: default max size for texts in the site. Defaults to 140. |
| 1046 |
0 means no limit. Can be fine-tuned for notices, messages, |
| 1047 |
profile bios and group descriptions. |
| 1048 |
|
| 1049 |
db |
| 1050 |
-- |
| 1051 |
|
| 1052 |
This section is a reference to the configuration options for |
| 1053 |
DB_DataObject (see <http://ur1.ca/7xp>). The ones that you may want to |
| 1054 |
set are listed below for clarity. |
| 1055 |
|
| 1056 |
database: a DSN (Data Source Name) for your StatusNet database. This is |
| 1057 |
in the format 'protocol://username:password@hostname/databasename', |
| 1058 |
where 'protocol' is 'mysql' or 'mysqli' (or possibly 'postgresql', if you |
| 1059 |
really know what you're doing), 'username' is the username, |
| 1060 |
'password' is the password, and etc. |
| 1061 |
ini_yourdbname: if your database is not named 'statusnet', you'll need |
| 1062 |
to set this to point to the location of the |
| 1063 |
statusnet.ini file. Note that the real name of your database |
| 1064 |
should go in there, not literally 'yourdbname'. |
| 1065 |
db_driver: You can try changing this to 'MDB2' to use the other driver |
| 1066 |
type for DB_DataObject, but note that it breaks the OpenID |
| 1067 |
libraries, which only support PEAR::DB. |
| 1068 |
debug: On a database error, you may get a message saying to set this |
| 1069 |
value to 5 to see debug messages in the browser. This breaks |
| 1070 |
just about all pages, and will also expose the username and |
| 1071 |
password |
| 1072 |
quote_identifiers: Set this to true if you're using postgresql. |
| 1073 |
type: either 'mysql' or 'postgresql' (used for some bits of |
| 1074 |
database-type-specific SQL in the code). Defaults to mysql. |
| 1075 |
mirror: you can set this to an array of DSNs, like the above |
| 1076 |
'database' value. If it's set, certain read-only actions will |
| 1077 |
use a random value out of this array for the database, rather |
| 1078 |
than the one in 'database' (actually, 'database' is overwritten). |
| 1079 |
You can offload a busy DB server by setting up MySQL replication |
| 1080 |
and adding the slaves to this array. Note that if you want some |
| 1081 |
requests to go to the 'database' (master) server, you'll need |
| 1082 |
to include it in this array, too. |
| 1083 |
utf8: whether to talk to the database in UTF-8 mode. This is the default |
| 1084 |
with new installations, but older sites may want to turn it off |
| 1085 |
until they get their databases fixed up. See "UTF-8 database" |
| 1086 |
above for details. |
| 1087 |
schemacheck: when to let plugins check the database schema to add |
| 1088 |
tables or update them. Values can be 'runtime' (default) |
| 1089 |
or 'script'. 'runtime' can be costly (plugins check the |
| 1090 |
schema on every hit, adding potentially several db |
| 1091 |
queries, some quite long), but not everyone knows how to |
| 1092 |
run a script. If you can, set this to 'script' and run |
| 1093 |
scripts/checkschema.php whenever you install or upgrade a |
| 1094 |
plugin. |
| 1095 |
|
| 1096 |
syslog |
| 1097 |
------ |
| 1098 |
|
| 1099 |
By default, StatusNet sites log error messages to the syslog facility. |
| 1100 |
(You can override this using the 'logfile' parameter described above). |
| 1101 |
|
| 1102 |
appname: The name that StatusNet uses to log messages. By default it's |
| 1103 |
"statusnet", but if you have more than one installation on the |
| 1104 |
server, you may want to change the name for each instance so |
| 1105 |
you can track log messages more easily. |
| 1106 |
priority: level to log at. Currently ignored. |
| 1107 |
facility: what syslog facility to used. Defaults to LOG_USER, only |
| 1108 |
reset if you know what syslog is and have a good reason |
| 1109 |
to change it. |
| 1110 |
|
| 1111 |
queue |
| 1112 |
----- |
| 1113 |
|
| 1114 |
You can configure the software to queue time-consuming tasks, like |
| 1115 |
sending out SMS email or XMPP messages, for off-line processing. See |
| 1116 |
'Queues and daemons' above for how to set this up. |
| 1117 |
|
| 1118 |
enabled: Whether to uses queues. Defaults to false. |
| 1119 |
subsystem: Which kind of queueserver to use. Values include "db" for |
| 1120 |
our hacked-together database queuing (no other server |
| 1121 |
required) and "stomp" for a stomp server. |
| 1122 |
stomp_server: "broker URI" for stomp server. Something like |
| 1123 |
"tcp://hostname:61613". More complicated ones are |
| 1124 |
possible; see your stomp server's documentation for |
| 1125 |
details. |
| 1126 |
queue_basename: a root name to use for queues (stomp only). Typically |
| 1127 |
something like '/queue/sitename/' makes sense. |
| 1128 |
stomp_username: username for connecting to the stomp server; defaults |
| 1129 |
to null. |
| 1130 |
stomp_password: password for connecting to the stomp server; defaults |
| 1131 |
to null. |
| 1132 |
license |
| 1133 |
------- |
| 1134 |
|
| 1135 |
The default license to use for your users notices. The default is the |
| 1136 |
Creative Commons Attribution 3.0 license, which is probably the right |
| 1137 |
choice for any public site. Note that some other servers will not |
| 1138 |
accept notices if you apply a stricter license than this. |
| 1139 |
|
| 1140 |
type: one of 'cc' (for Creative Commons licenses), 'allrightsreserved' |
| 1141 |
(default copyright), or 'private' (for private and confidential |
| 1142 |
information). |
| 1143 |
owner: for 'allrightsreserved' or 'private', an assigned copyright |
| 1144 |
holder (for example, an employer for a private site). If |
| 1145 |
not specified, will be attributed to 'contributors'. |
| 1146 |
url: URL of the license, used for links. |
| 1147 |
title: Title for the license, like 'Creative Commons Attribution 3.0'. |
| 1148 |
image: A button shown on each page for the license. |
| 1149 |
|
| 1150 |
mail |
| 1151 |
---- |
| 1152 |
|
| 1153 |
This is for configuring out-going email. We use PEAR's Mail module, |
| 1154 |
see: http://pear.php.net/manual/en/package.mail.mail.factory.php |
| 1155 |
|
| 1156 |
backend: the backend to use for mail, one of 'mail', 'sendmail', and |
| 1157 |
'smtp'. Defaults to PEAR's default, 'mail'. |
| 1158 |
params: if the mail backend requires any parameters, you can provide |
| 1159 |
them in an associative array. |
| 1160 |
|
| 1161 |
nickname |
| 1162 |
-------- |
| 1163 |
|
| 1164 |
This is for configuring nicknames in the service. |
| 1165 |
|
| 1166 |
blacklist: an array of strings for usernames that may not be |
| 1167 |
registered. A default array exists for strings that are |
| 1168 |
used by StatusNet (e.g. 'doc', 'main', 'avatar', 'theme') |
| 1169 |
but you may want to add others if you have other software |
| 1170 |
installed in a subdirectory of StatusNet or if you just |
| 1171 |
don't want certain words used as usernames. |
| 1172 |
featured: an array of nicknames of 'featured' users of the site. |
| 1173 |
Can be useful to draw attention to well-known users, or |
| 1174 |
interesting people, or whatever. |
| 1175 |
|
| 1176 |
avatar |
| 1177 |
------ |
| 1178 |
|
| 1179 |
For configuring avatar access. |
| 1180 |
|
| 1181 |
dir: Directory to look for avatar files and to put them into. |
| 1182 |
Defaults to avatar subdirectory of install directory; if |
| 1183 |
you change it, make sure to change path, too. |
| 1184 |
path: Path to avatars. Defaults to path for avatar subdirectory, |
| 1185 |
but you can change it if you wish. Note that this will |
| 1186 |
be included with the avatar server, too. |
| 1187 |
server: If set, defines another server where avatars are stored in the |
| 1188 |
root directory. Note that the 'avatar' subdir still has to be |
| 1189 |
writeable. You'd typically use this to split HTTP requests on |
| 1190 |
the client to speed up page loading, either with another |
| 1191 |
virtual server or with an NFS or SAMBA share. Clients |
| 1192 |
typically only make 2 connections to a single server at a |
| 1193 |
time <http://ur1.ca/6ih>, so this can parallelize the job. |
| 1194 |
Defaults to null. |
| 1195 |
|
| 1196 |
public |
| 1197 |
------ |
| 1198 |
|
| 1199 |
For configuring the public stream. |
| 1200 |
|
| 1201 |
localonly: If set to true, only messages posted by users of this |
| 1202 |
service (rather than other services, filtered through OMB) |
| 1203 |
are shown in the public stream. Default true. |
| 1204 |
blacklist: An array of IDs of users to hide from the public stream. |
| 1205 |
Useful if you have someone making excessive Twitterfeed posts |
| 1206 |
to the site, other kinds of automated posts, testing bots, etc. |
| 1207 |
autosource: Sources of notices that are from automatic posters, and thus |
| 1208 |
should be kept off the public timeline. Default empty. |
| 1209 |
|
| 1210 |
theme |
| 1211 |
----- |
| 1212 |
|
| 1213 |
server: Like avatars, you can speed up page loading by pointing the |
| 1214 |
theme file lookup to another server (virtual or real). |
| 1215 |
Defaults to NULL, meaning to use the site server. |
| 1216 |
dir: Directory where theme files are stored. Used to determine |
| 1217 |
whether to show parts of a theme file. Defaults to the theme |
| 1218 |
subdirectory of the install directory. |
| 1219 |
path: Path part of theme URLs, before the theme name. Relative to the |
| 1220 |
theme server. It may make sense to change this path when upgrading, |
| 1221 |
(using version numbers as the path) to make sure that all files are |
| 1222 |
reloaded by caching clients or proxies. Defaults to null, |
| 1223 |
which means to use the site path + '/theme'. |
| 1224 |
|
| 1225 |
xmpp |
| 1226 |
---- |
| 1227 |
|
| 1228 |
For configuring the XMPP sub-system. |
| 1229 |
|
| 1230 |
enabled: Whether to accept and send messages by XMPP. Default false. |
| 1231 |
server: server part of XMPP ID for update user. |
| 1232 |
port: connection port for clients. Default 5222, which you probably |
| 1233 |
shouldn't need to change. |
| 1234 |
user: username for the client connection. Users will receive messages |
| 1235 |
from 'user'@'server'. |
| 1236 |
resource: a unique identifier for the connection to the server. This |
| 1237 |
is actually used as a prefix for each XMPP component in the system. |
| 1238 |
password: password for the user account. |
| 1239 |
host: some XMPP domains are served by machines with a different |
| 1240 |
hostname. (For example, @gmail.com GTalk users connect to |
| 1241 |
talk.google.com). Set this to the correct hostname if that's the |
| 1242 |
case with your server. |
| 1243 |
encryption: Whether to encrypt the connection between StatusNet and the |
| 1244 |
XMPP server. Defaults to true, but you can get |
| 1245 |
considerably better performance turning it off if you're |
| 1246 |
connecting to a server on the same machine or on a |
| 1247 |
protected network. |
| 1248 |
debug: if turned on, this will make the XMPP library blurt out all of |
| 1249 |
the incoming and outgoing messages as XML stanzas. Use as a |
| 1250 |
last resort, and never turn it on if you don't have queues |
| 1251 |
enabled, since it will spit out sensitive data to the browser. |
| 1252 |
public: an array of JIDs to send _all_ notices to. This is useful for |
| 1253 |
participating in third-party search and archiving services. |
| 1254 |
|
| 1255 |
invite |
| 1256 |
------ |
| 1257 |
|
| 1258 |
For configuring invites. |
| 1259 |
|
| 1260 |
enabled: Whether to allow users to send invites. Default true. |
| 1261 |
|
| 1262 |
tag |
| 1263 |
--- |
| 1264 |
|
| 1265 |
Miscellaneous tagging stuff. |
| 1266 |
|
| 1267 |
dropoff: Decay factor for tag listing, in seconds. |
| 1268 |
Defaults to exponential decay over ten days; you can twiddle |
| 1269 |
with it to try and get better results for your site. |
| 1270 |
|
| 1271 |
popular |
| 1272 |
------- |
| 1273 |
|
| 1274 |
Settings for the "popular" section of the site. |
| 1275 |
|
| 1276 |
dropoff: Decay factor for popularity listing, in seconds. |
| 1277 |
Defaults to exponential decay over ten days; you can twiddle |
| 1278 |
with it to try and get better results for your site. |
| 1279 |
|
| 1280 |
daemon |
| 1281 |
------ |
| 1282 |
|
| 1283 |
For daemon processes. |
| 1284 |
|
| 1285 |
piddir: directory that daemon processes should write their PID file |
| 1286 |
(process ID) to. Defaults to /var/run/, which is where this |
| 1287 |
stuff should usually go on Unix-ish systems. |
| 1288 |
user: If set, the daemons will try to change their effective user ID |
| 1289 |
to this user before running. Probably a good idea, especially if |
| 1290 |
you start the daemons as root. Note: user name, like 'daemon', |
| 1291 |
not 1001. |
| 1292 |
group: If set, the daemons will try to change their effective group ID |
| 1293 |
to this named group. Again, a name, not a numerical ID. |
| 1294 |
|
| 1295 |
memcached |
| 1296 |
--------- |
| 1297 |
|
| 1298 |
You can get a significant boost in performance by caching some |
| 1299 |
database data in memcached <http://www.danga.com/memcached/>. |
| 1300 |
|
| 1301 |
enabled: Set to true to enable. Default false. |
| 1302 |
server: a string with the hostname of the memcached server. Can also |
| 1303 |
be an array of hostnames, if you've got more than one server. |
| 1304 |
base: memcached uses key-value pairs to store data. We build long, |
| 1305 |
funny-looking keys to make sure we don't have any conflicts. The |
| 1306 |
base of the key is usually a simplified version of the site name |
| 1307 |
(like "Identi.ca" => "identica"), but you can overwrite this if |
| 1308 |
you need to. You can safely ignore it if you only have one |
| 1309 |
StatusNet site using your memcached server. |
| 1310 |
port: Port to connect to; defaults to 11211. |
| 1311 |
|
| 1312 |
emailpost |
| 1313 |
--------- |
| 1314 |
|
| 1315 |
For post-by-email. |
| 1316 |
|
| 1317 |
enabled: Whether to enable post-by-email. Defaults to true. You will |
| 1318 |
also need to set up maildaemon.php. |
| 1319 |
|
| 1320 |
sms |
| 1321 |
--- |
| 1322 |
|
| 1323 |
For SMS integration. |
| 1324 |
|
| 1325 |
enabled: Whether to enable SMS integration. Defaults to true. Queues |
| 1326 |
should also be enabled. |
| 1327 |
|
| 1328 |
integration |
| 1329 |
----------- |
| 1330 |
|
| 1331 |
A catch-all for integration with other systems. |
| 1332 |
|
| 1333 |
taguri: base for tag:// URIs. Defaults to site-server + ',2009'. |
| 1334 |
|
| 1335 |
inboxes |
| 1336 |
------- |
| 1337 |
|
| 1338 |
For notice inboxes. |
| 1339 |
|
| 1340 |
enabled: No longer used. If you set this to something other than true, |
| 1341 |
StatusNet will no longer run. |
| 1342 |
|
| 1343 |
throttle |
| 1344 |
-------- |
| 1345 |
|
| 1346 |
For notice-posting throttles. |
| 1347 |
|
| 1348 |
enabled: Whether to throttle posting. Defaults to false. |
| 1349 |
count: Each user can make this many posts in 'timespan' seconds. So, if count |
| 1350 |
is 100 and timespan is 3600, then there can be only 100 posts |
| 1351 |
from a user every hour. |
| 1352 |
timespan: see 'count'. |
| 1353 |
|
| 1354 |
profile |
| 1355 |
------- |
| 1356 |
|
| 1357 |
Profile management. |
| 1358 |
|
| 1359 |
banned: an array of usernames and/or profile IDs of 'banned' profiles. |
| 1360 |
The site will reject any notices by these users -- they will |
| 1361 |
not be accepted at all. (Compare with blacklisted users above, |
| 1362 |
whose posts just won't show up in the public stream.) |
| 1363 |
biolimit: max character length of bio; 0 means no limit; null means to use |
| 1364 |
the site text limit default. |
| 1365 |
|
| 1366 |
newuser |
| 1367 |
------- |
| 1368 |
|
| 1369 |
Options with new users. |
| 1370 |
|
| 1371 |
default: nickname of a user account to automatically subscribe new |
| 1372 |
users to. Typically this would be system account for e.g. |
| 1373 |
service updates or announcements. Users are able to unsub |
| 1374 |
if they want. Default is null; no auto subscribe. |
| 1375 |
welcome: nickname of a user account that sends welcome messages to new |
| 1376 |
users. Can be the same as 'default' account, although on |
| 1377 |
busy servers it may be a good idea to keep that one just for |
| 1378 |
'urgent' messages. Default is null; no message. |
| 1379 |
|
| 1380 |
If either of these special user accounts are specified, the users should |
| 1381 |
be created before the configuration is updated. |
| 1382 |
|
| 1383 |
snapshot |
| 1384 |
-------- |
| 1385 |
|
| 1386 |
The software will, by default, send statistical snapshots about the |
| 1387 |
local installation to a stats server on the status.net Web site. This |
| 1388 |
data is used by the developers to prioritize development decisions. No |
| 1389 |
identifying data about users or organizations is collected. The data |
| 1390 |
is available to the public for review. Participating in this survey |
| 1391 |
helps StatusNet developers take your needs into account when updating |
| 1392 |
the software. |
| 1393 |
|
| 1394 |
run: string indicating when to run the statistics. Values can be 'web' |
| 1395 |
(run occasionally at Web time), 'cron' (run from a cron script), |
| 1396 |
or 'never' (don't ever run). If you set it to 'cron', remember to |
| 1397 |
schedule the script to run on a regular basis. |
| 1398 |
frequency: if run value is 'web', how often to report statistics. |
| 1399 |
Measured in Web hits; depends on how active your site is. |
| 1400 |
Default is 10000 -- that is, one report every 10000 Web hits, |
| 1401 |
on average. |
| 1402 |
reporturl: URL to post statistics to. Defaults to StatusNet developers' |
| 1403 |
report system, but if they go evil or disappear you may |
| 1404 |
need to update this to another value. Note: if you |
| 1405 |
don't want to report stats, it's much better to |
| 1406 |
set 'run' to 'never' than to set this value to something |
| 1407 |
nonsensical. |
| 1408 |
|
| 1409 |
attachments |
| 1410 |
----------- |
| 1411 |
|
| 1412 |
The software lets users upload files with their notices. You can configure |
| 1413 |
the types of accepted files by mime types and a trio of quota options: |
| 1414 |
per file, per user (total), per user per month. |
| 1415 |
|
| 1416 |
We suggest the use of the pecl file_info extension to handle mime type |
| 1417 |
detection. |
| 1418 |
|
| 1419 |
supported: an array of mime types you accept to store and distribute, |
| 1420 |
like 'image/gif', 'video/mpeg', 'audio/mpeg', etc. Make sure you |
| 1421 |
setup your server to properly recognize the types you want to |
| 1422 |
support. |
| 1423 |
uploads: false to disable uploading files with notices (true by default). |
| 1424 |
filecommand: The required MIME_Type library may need to use the 'file' |
| 1425 |
command. It tries the one in the Web server's path, but if |
| 1426 |
you're having problems with uploads, try setting this to the |
| 1427 |
correct value. Note: 'file' must accept '-b' and '-i' options. |
| 1428 |
|
| 1429 |
For quotas, be sure you've set the upload_max_filesize and post_max_size |
| 1430 |
in php.ini to be large enough to handle your upload. In httpd.conf |
| 1431 |
(if you're using apache), check that the LimitRequestBody directive isn't |
| 1432 |
set too low (it's optional, so it may not be there at all). |
| 1433 |
|
| 1434 |
file_quota: maximum size for a single file upload in bytes. A user can send |
| 1435 |
any amount of notices with attachments as long as each attachment |
| 1436 |
is smaller than file_quota. |
| 1437 |
user_quota: total size in bytes a user can store on this server. Each user |
| 1438 |
can store any number of files as long as their total size does |
| 1439 |
not exceed the user_quota. |
| 1440 |
monthly_quota: total size permitted in the current month. This is the total |
| 1441 |
size in bytes that a user can upload each month. |
| 1442 |
dir: directory accessible to the Web process where uploads should go. |
| 1443 |
Defaults to the 'file' subdirectory of the install directory, which |
| 1444 |
should be writeable by the Web user. |
| 1445 |
server: server name to use when creating URLs for uploaded files. |
| 1446 |
Defaults to null, meaning to use the default Web server. Using |
| 1447 |
a virtual server here can speed up Web performance. |
| 1448 |
path: URL path, relative to the server, to find files. Defaults to |
| 1449 |
main path + '/file/'. |
| 1450 |
filecommand: command to use for determining the type of a file. May be |
| 1451 |
skipped if fileinfo extension is installed. Defaults to |
| 1452 |
'/usr/bin/file'. |
| 1453 |
|
| 1454 |
group |
| 1455 |
----- |
| 1456 |
|
| 1457 |
Options for group functionality. |
| 1458 |
|
| 1459 |
maxaliases: maximum number of aliases a group can have. Default 3. Set |
| 1460 |
to 0 or less to prevent aliases in a group. |
| 1461 |
desclimit: maximum number of characters to allow in group descriptions. |
| 1462 |
null (default) means to use the site-wide text limits. 0 |
| 1463 |
means no limit. |
| 1464 |
|
| 1465 |
oohembed |
| 1466 |
-------- |
| 1467 |
|
| 1468 |
oEmbed endpoint for multimedia attachments (links in posts). |
| 1469 |
|
| 1470 |
endpoint: oohembed endpoint using http://oohembed.com/ software. |
| 1471 |
|
| 1472 |
search |
| 1473 |
------ |
| 1474 |
|
| 1475 |
Some stuff for search. |
| 1476 |
|
| 1477 |
type: type of search. Ignored if PostgreSQL or Sphinx are enabled. Can either |
| 1478 |
be 'fulltext' (default) or 'like'. The former is faster and more efficient |
| 1479 |
but requires the lame old MyISAM engine for MySQL. The latter |
| 1480 |
will work with InnoDB but could be miserably slow on large |
| 1481 |
systems. We'll probably add another type sometime in the future, |
| 1482 |
with our own indexing system (maybe like MediaWiki's). |
| 1483 |
|
| 1484 |
sessions |
| 1485 |
-------- |
| 1486 |
|
| 1487 |
Session handling. |
| 1488 |
|
| 1489 |
handle: boolean. Whether we should register our own PHP session-handling |
| 1490 |
code (using the database and memcache if enabled). Defaults to false. |
| 1491 |
Setting this to true makes some sense on large or multi-server |
| 1492 |
sites, but it probably won't hurt for smaller ones, either. |
| 1493 |
debug: whether to output debugging info for session storage. Can help |
| 1494 |
with weird session bugs, sometimes. Default false. |
| 1495 |
|
| 1496 |
background |
| 1497 |
---------- |
| 1498 |
|
| 1499 |
Users can upload backgrounds for their pages; this section defines |
| 1500 |
their use. |
| 1501 |
|
| 1502 |
server: the server to use for background. Using a separate (even |
| 1503 |
virtual) server for this can speed up load times. Default is |
| 1504 |
null; same as site server. |
| 1505 |
dir: directory to write backgrounds too. Default is '/background/' |
| 1506 |
subdir of install dir. |
| 1507 |
path: path to backgrounds. Default is sub-path of install path; note |
| 1508 |
that you may need to change this if you change site-path too. |
| 1509 |
|
| 1510 |
ping |
| 1511 |
---- |
| 1512 |
|
| 1513 |
Using the "XML-RPC Ping" method initiated by weblogs.com, the site can |
| 1514 |
notify third-party servers of updates. |
| 1515 |
|
| 1516 |
notify: an array of URLs for ping endpoints. Default is the empty |
| 1517 |
array (no notification). |
| 1518 |
|
| 1519 |
design |
| 1520 |
------ |
| 1521 |
|
| 1522 |
Default design (colors and background) for the site. Actual appearance |
| 1523 |
depends on the theme. Null values mean to use the theme defaults. |
| 1524 |
|
| 1525 |
backgroundcolor: Hex color of the site background. |
| 1526 |
contentcolor: Hex color of the content area background. |
| 1527 |
sidebarcolor: Hex color of the sidebar background. |
| 1528 |
textcolor: Hex color of all non-link text. |
| 1529 |
linkcolor: Hex color of all links. |
| 1530 |
backgroundimage: Image to use for the background. |
| 1531 |
disposition: Flags for whether or not to tile the background image. |
| 1532 |
|
| 1533 |
notice |
| 1534 |
------ |
| 1535 |
|
| 1536 |
Configuration options specific to notices. |
| 1537 |
|
| 1538 |
contentlimit: max length of the plain-text content of a notice. |
| 1539 |
Default is null, meaning to use the site-wide text limit. |
| 1540 |
0 means no limit. |
| 1541 |
|
| 1542 |
message |
| 1543 |
------- |
| 1544 |
|
| 1545 |
Configuration options specific to messages. |
| 1546 |
|
| 1547 |
contentlimit: max length of the plain-text content of a message. |
| 1548 |
Default is null, meaning to use the site-wide text limit. |
| 1549 |
0 means no limit. |
| 1550 |
|
| 1551 |
logincommand |
| 1552 |
------------ |
| 1553 |
|
| 1554 |
Configuration options for the login command. |
| 1555 |
|
| 1556 |
disabled: whether to enable this command. If enabled, users who send |
| 1557 |
the text 'login' to the site through any channel will |
| 1558 |
receive a link to login to the site automatically in return. |
| 1559 |
Possibly useful for users who primarily use an XMPP or SMS |
| 1560 |
interface and can't be bothered to remember their site |
| 1561 |
password. Note that the security implications of this are |
| 1562 |
pretty serious and have not been thoroughly tested. You |
| 1563 |
should enable it only after you've convinced yourself that |
| 1564 |
it is safe. Default is 'false'. |
| 1565 |
|
| 1566 |
singleuser |
| 1567 |
---------- |
| 1568 |
|
| 1569 |
If an installation has only one user, this can simplify a lot of the |
| 1570 |
interface. It also makes the user's profile the root URL. |
| 1571 |
|
| 1572 |
enabled: Whether to run in "single user mode". Default false. |
| 1573 |
nickname: nickname of the single user. |
| 1574 |
|
| 1575 |
robotstxt |
| 1576 |
--------- |
| 1577 |
|
| 1578 |
We put out a default robots.txt file to guide the processing of |
| 1579 |
Web crawlers. See http://www.robotstxt.org/ for more information |
| 1580 |
on the format of this file. |
| 1581 |
|
| 1582 |
crawldelay: if non-empty, this value is provided as the Crawl-Delay: |
| 1583 |
for the robots.txt file. see http://ur1.ca/l5a0 |
| 1584 |
for more information. Default is zero, no explicit delay. |
| 1585 |
disallow: Array of (virtual) directories to disallow. Default is 'main', |
| 1586 |
'search', 'message', 'settings', 'admin'. Ignored when site |
| 1587 |
is private, in which case the entire site ('/') is disallowed. |
| 1588 |
|
| 1589 |
Plugins |
| 1590 |
======= |
| 1591 |
|
| 1592 |
Beginning with the 0.7.x branch, StatusNet has supported a simple but |
| 1593 |
powerful plugin architecture. Important events in the code are named, |
| 1594 |
like 'StartNoticeSave', and other software can register interest |
| 1595 |
in those events. When the events happen, the other software is called |
| 1596 |
and has a choice of accepting or rejecting the events. |
| 1597 |
|
| 1598 |
In the simplest case, you can add a function to config.php and use the |
| 1599 |
Event::addHandler() function to hook an event: |
| 1600 |
|
| 1601 |
function AddGoogleLink($action) |
| 1602 |
{ |
| 1603 |
$action->menuItem('http://www.google.com/', _('Google'), _('Search engine')); |
| 1604 |
return true; |
| 1605 |
} |
| 1606 |
|
| 1607 |
Event::addHandler('EndPrimaryNav', 'AddGoogleLink'); |
| 1608 |
|
| 1609 |
This adds a menu item to the end of the main navigation menu. You can |
| 1610 |
see the list of existing events, and parameters that handlers must |
| 1611 |
implement, in EVENTS.txt. |
| 1612 |
|
| 1613 |
The Plugin class in lib/plugin.php makes it easier to write more |
| 1614 |
complex plugins. Sub-classes can just create methods named |
| 1615 |
'onEventName', where 'EventName' is the name of the event (case |
| 1616 |
matters!). These methods will be automatically registered as event |
| 1617 |
handlers by the Plugin constructor (which you must call from your own |
| 1618 |
class's constructor). |
| 1619 |
|
| 1620 |
Several example plugins are included in the plugins/ directory. You |
| 1621 |
can enable a plugin with the following line in config.php: |
| 1622 |
|
| 1623 |
addPlugin('Example', array('param1' => 'value1', |
| 1624 |
'param2' => 'value2')); |
| 1625 |
|
| 1626 |
This will look for and load files named 'ExamplePlugin.php' or |
| 1627 |
'Example/ExamplePlugin.php' either in the plugins/ directory (for |
| 1628 |
plugins that ship with StatusNet) or in the local/ directory (for |
| 1629 |
plugins you write yourself or that you get from somewhere else) or |
| 1630 |
local/plugins/. |
| 1631 |
|
| 1632 |
Plugins are documented in their own directories. |
| 1633 |
|
| 1634 |
Troubleshooting |
| 1635 |
=============== |
| 1636 |
|
| 1637 |
The primary output for StatusNet is syslog, unless you configured a |
| 1638 |
separate logfile. This is probably the first place to look if you're |
| 1639 |
getting weird behaviour from StatusNet. |
| 1640 |
|
| 1641 |
If you're tracking the unstable version of StatusNet in the git |
| 1642 |
repository (see below), and you get a compilation error ("unexpected |
| 1643 |
T_STRING") in the browser, check to see that you don't have any |
| 1644 |
conflicts in your code. |
| 1645 |
|
| 1646 |
If you upgraded to StatusNet 0.8.2 without reading the "Notice |
| 1647 |
inboxes" section above, and all your users' 'Personal' tabs are empty, |
| 1648 |
read the "Notice inboxes" section above. |
| 1649 |
|
| 1650 |
Myths |
| 1651 |
===== |
| 1652 |
|
| 1653 |
These are some myths you may see on the Web about StatusNet. |
| 1654 |
Documentation from the core team about StatusNet has been pretty |
| 1655 |
sparse, so some backtracking and guesswork resulted in some incorrect |
| 1656 |
assumptions. |
| 1657 |
|
| 1658 |
- "Set $config['db']['debug'] = 5 to debug the database." This is an |
| 1659 |
extremely bad idea. It's a tool built into DB_DataObject that will |
| 1660 |
emit oodles of print lines directly to the browser of your users. |
| 1661 |
Among these lines will be your database username and password. Do |
| 1662 |
not enable this option on a production Web site for any reason. |
| 1663 |
|
| 1664 |
- "Edit dataobject.ini with the following settings..." dataobject.ini |
| 1665 |
is a development file for the DB_DataObject framework and is not |
| 1666 |
used by the running software. It was removed from the StatusNet |
| 1667 |
distribution because its presence was confusing. Do not bother |
| 1668 |
configuring dataobject.ini, and do not put your database username |
| 1669 |
and password into the file on a production Web server; unscrupulous |
| 1670 |
persons may try to read it to get your passwords. |
| 1671 |
|
| 1672 |
Unstable version |
| 1673 |
================ |
| 1674 |
|
| 1675 |
If you're adventurous or impatient, you may want to install the |
| 1676 |
development version of StatusNet. To get it, use the git version |
| 1677 |
control tool <http://git-scm.com/> like so: |
| 1678 |
|
| 1679 |
git clone git@gitorious.org:statusnet/mainline.git |
| 1680 |
|
| 1681 |
This is the version of the software that runs on Identi.ca and the |
| 1682 |
status.net hosted service. Using it is a mixed bag. On the positive |
| 1683 |
side, it usually includes the latest security and bug fix patches. On |
| 1684 |
the downside, it may also include changes that require admin |
| 1685 |
intervention (like running a script or even raw SQL!) that may not be |
| 1686 |
documented yet. It may be a good idea to test this version before |
| 1687 |
installing it on your production machines. |
| 1688 |
|
| 1689 |
To keep it up-to-date, use 'git pull'. Watch for conflicts! |
| 1690 |
|
| 1691 |
Further information |
| 1692 |
=================== |
| 1693 |
|
| 1694 |
There are several ways to get more information about StatusNet. |
| 1695 |
|
| 1696 |
* There is a mailing list for StatusNet developers and admins at |
| 1697 |
http://mail.status.net/mailman/listinfo/statusnet-dev |
| 1698 |
* The #statusnet IRC channel on freenode.net <http://www.freenode.net/>. |
| 1699 |
* The StatusNet wiki, http://status.net/wiki/ |
| 1700 |
* The StatusNet blog, http://status.net/blog/ |
| 1701 |
* The StatusNet status update, <http://status.status.net/status> (!) |
| 1702 |
|
| 1703 |
Feedback |
| 1704 |
======== |
| 1705 |
|
| 1706 |
* Microblogging messages to http://identi.ca/evan are very welcome. |
| 1707 |
* StatusNet's Trac server has a bug tracker for any defects you may find, |
| 1708 |
or ideas for making things better. http://status.net/trac/ |
| 1709 |
* e-mail to evan@status.net will usually be read and responded to very |
| 1710 |
quickly, unless the question is really hard. |
| 1711 |
|
| 1712 |
Credits |
| 1713 |
======= |
| 1714 |
|
| 1715 |
The following is an incomplete list of developers who've worked on |
| 1716 |
StatusNet. Apologies for any oversight; please let evan@status.net know |
| 1717 |
if anyone's been overlooked in error. |
| 1718 |
|
| 1719 |
* Evan Prodromou, founder and lead developer, StatusNet, Inc. |
| 1720 |
* Zach Copley, StatusNet, Inc. |
| 1721 |
* Earle Martin, StatusNet, Inc. |
| 1722 |
* Marie-Claude Doyon, designer, StatusNet, Inc. |
| 1723 |
* Sarven Capadisli, StatusNet, Inc. |
| 1724 |
* Robin Millette, StatusNet, Inc. |
| 1725 |
* Ciaran Gultnieks |
| 1726 |
* Michael Landers |
| 1727 |
* Ori Avtalion |
| 1728 |
* Garret Buell |
| 1729 |
* Mike Cochrane |
| 1730 |
* Matthew Gregg |
| 1731 |
* Florian Biree |
| 1732 |
* Erik Stambaugh |
| 1733 |
* 'drry' |
| 1734 |
* Gina Haeussge |
| 1735 |
* Tryggvi Björgvinsson |
| 1736 |
* Adrian Lang |
| 1737 |
* Ori Avtalion |
| 1738 |
* Meitar Moscovitz |
| 1739 |
* Ken Sheppardson (Trac server, man-about-town) |
| 1740 |
* Tiago 'gouki' Faria (i18n manager) |
| 1741 |
* Sean Murphy |
| 1742 |
* Leslie Michael Orchard |
| 1743 |
* Eric Helgeson |
| 1744 |
* Ken Sedgwick |
| 1745 |
* Brian Hendrickson |
| 1746 |
* Tobias Diekershoff |
| 1747 |
* Dan Moore |
| 1748 |
* Fil |
| 1749 |
* Jeff Mitchell |
| 1750 |
* Brenda Wallace |
| 1751 |
* Jeffery To |
| 1752 |
* Federico Marani |
| 1753 |
* Craig Andrews |
| 1754 |
* mEDI |
| 1755 |
* Brett Taylor |
| 1756 |
* Brigitte Schuster |
| 1757 |
|
| 1758 |
Thanks also to the developers of our upstream library code and to the |
| 1759 |
thousands of people who have tried out Identi.ca, installed StatusNet, |
| 1760 |
told their friends, and built the Open Microblogging network to what |
| 1761 |
it is today. |