1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/diaspora_ynh.git synced 2024-09-03 18:26:13 +02:00
no code test yet
This commit is contained in:
Développeur égaré 2015-02-17 03:39:33 +01:00
parent d474559dd6
commit 7878c4d99e
10 changed files with 949 additions and 17 deletions

17
.gitattributes vendored
View file

@ -1,17 +0,0 @@
# Auto detect text files and perform LF normalization
* text=auto
# Custom for Visual Studio
*.cs diff=csharp
# Standard to msysgit
*.doc diff=astextplain
*.DOC diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot diff=astextplain
*.DOT diff=astextplain
*.pdf diff=astextplain
*.PDF diff=astextplain
*.rtf diff=astextplain
*.RTF diff=astextplain

7
README.md Normal file
View file

@ -0,0 +1,7 @@
diaspora_ynh
==========
Diaspora integration for YunoHost
There are not yet active SSO/LDAP integration.
Install can take a very long time !!

54
conf/database.yml Normal file
View file

@ -0,0 +1,54 @@
mysql: &mysql
adapter: mysql2
host: "localhost"
port: 3306
username: "DBUSERTOCHANGE"
password: "DBPASSTOCHANGE"
# socket: /tmp/mysql.sock
charset: utf8
collation: utf8_bin
postgres: &postgres
adapter: postgresql
host: localhost
port: 5432
username: postgres
password:
encoding: unicode
# Comment the the mysql line and uncomment the postgres line
# if you want to use postgres
common: &common
# Choose one of the following
<<: *mysql
#<<: *postgres
# Should match environment.sidekiq.concurrency
#pool: 25
##################################################
#### CONFIGURE ABOVE #############################
##################################################
# Normally you don't need to touch anything here
postgres_travis: &postgres_travis
adapter: postgresql
username: postgres
combined: &combined
<<: *common
development:
<<: *combined
database: diaspora_development
production:
<<: *combined
database: diaspora_production
test:
<<: *combined
database: "diaspora_test"
integration1:
<<: *combined
database: diaspora_integration1
integration2:
<<: *combined
database: diaspora_integration2

217
conf/diaspora Normal file
View file

@ -0,0 +1,217 @@
#! /bin/sh
### BEGIN INIT INFO
# Provides: diaspora
# Required-Start: $remote_fs $syslog mysql redis-server
# Required-Stop: $remote_fs $syslog mysql redis-server
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Diaspora application server
# Description: Start / stop the Diaspora app server
### END INIT INFO
# Author: FABIAN Tamas Laszlo <giganetom@gmail.com>
# Updated: Pirate Praveen <praveen@debian.org>
# PATH should only include /usr/* if it runs after the mountnfs.sh script
# Note: /usr/local/bin for foreman gem
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin
DESC="Diaspora application server"
NAME=diaspora
DIASPORA_HOME="/var/www/diaspora"
STARTSCRIPT="./script/server"
LOGFILE=$DIASPORA_HOME/log/startscript.log
SCRIPTNAME=$0
USER=diaspora
STARTUP_TIMEOUT=100
. /lib/init/vars.sh
. /lib/lsb/init-functions
check_unicorn() {
pgrep -f "unicorn_rails master"
}
check_sidekiq() {
pgrep -f "sidekiq 2"
}
check_foreman() {
pgrep -f "foreman-runner"
}
check_foreman_start() {
pgrep -f "foreman start"
}
check_script_server() {
pgrep -f "script/server"
}
do_start()
{
if ! touch $LOGFILE; then
log_failure_msg "Could not touch logfile"
return 2
fi
if ! chown $USER $LOGFILE; then
log_failure_msg "Could not chown logfile"
return 2
fi
if check_unicorn && check_sidekiq; then
log_warning_msg "Diaspora is already running"
return 1
fi
if check_foreman || check_foreman_start || check_script_server; then
log_warning_msg "Diaspora is starting"
return 1
fi
. /etc/diaspora.conf
cd $DIASPORA_HOME
sudo su - $USER -c " . ~/.bashrc && cd $DIASPORA_HOME && $STARTSCRIPT >> $LOGFILE 2>&1 " &
if [ $? -gt 0 ]
then
log_failure_msg "Could not run start script"
return 2
else
log_success_msg "Starting diaspora server..."
return 0
fi
[ "$VERBOSE" != no ] && log_action_msg "Waiting for Diaspora processes... "
c=0
while ! check_unicorn > /dev/null || ! check_sidekiq > /dev/null; do
if [ $c -gt $STARTUP_TIMEOUT ]; then
log_failure_msg "Timeout waiting for Diaspora processes"
return 2
fi
c=`expr $c + 1`
sleep 1
[ "$VERBOSE" != no ] && echo -n "."
done
[ "$VERBOSE" != no ] && log_action_end_msg 0
}
do_stop()
{
for i in `check_unicorn`; do
[ "$VERBOSE" != no ] && log_action_msg "Killing unicorn master with PID $i"
kill -TERM $i
[ "$VERBOSE" != no ] && log_action_end_msg $?
done
for i in `check_sidekiq`; do
[ "$VERBOSE" != no ] && log_action_msg "Killing sidekiq with PID $i"
kill -TERM $i
[ "$VERBOSE" != no ] && log_action_end_msg $?
done
return 0
}
case "$1" in
start)
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
do_start
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
*) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
stop)
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
do_stop
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
status)
log_daemon_msg 'Checking for running Diaspora processes'
if ! check_unicorn
then
log_action_msg "unicorn not found"
unicorn_running=false
else
for i in `check_unicorn`; do
log_action_msg "Found unicorn master with PID $i"
unicorn_running=true
done
fi
if ! check_foreman
then
log_action_msg "foreman not found"
foreman_running=false
else
for i in `check_foreman`; do
log_action_msg "Found foreman with pid $i"
foreman_running=true
done
fi
if ! check_sidekiq
then
log_action_msg "sidekiq is not found"
sidekiq_running=false
else
for i in `check_sidekiq`; do
log_action_msg "Found sidekiq with PID $i"
sidekiq_running=true
done
fi
if $foreman_running && ! $unicorn_running; then
log_action_msg "Diaspora is starting, check after some time..."
log_end_msg 0
return 0
fi
if $unicorn_running && $sidekiq_running; then
log_action_msg "Diaspora health is OK"
log_end_msg 0
else
if $unicorn_running; then
log_failure_msg "Unicorn is RUNNING, but sidekiq is DOWN!"
log_end_msg 1
return 1
fi
if $sidekiq_running; then
log_failure_msg "Sidekiq is RUNNING, but unicorn is DOWN!"
log_end_msg 1
return 1
fi
log_daemon_msg "All Diaspora processes are DOWN"
log_end_msg 0
fi
;;
restart|force-reload)
[ "$VERBOSE" != no ] && log_daemon_msg "Restarting $DESC" "$NAME"
do_stop
case "$?" in
0|1)
do_start
case "$?" in
0) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
1) [ "$VERBOSE" != no ] && log_failure_msg "old process is still running" && log_end_msg 1 ;;
*) [ "$VERBOSE" != no ] && log_failure_msg "failed to start" && log_end_msg 1 ;;
esac
;;
*)
[ "$VERBOSE" != no ] && log_failure_msg "failed to stop"
[ "$VERBOSE" != no ] && log_end_msg 1
;;
esac
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
exit 3
;;
esac
:

4
conf/diaspora.conf Normal file
View file

@ -0,0 +1,4 @@
export SERVERNAME=localhost
export ENVIRONMENT_URL=http://localhost
export RAILS_ENV=production
export DB=mysql

442
conf/diaspora.yml Normal file
View file

@ -0,0 +1,442 @@
## Some notes about this file:
## - All comments start with a double #
## - All settings are commented out with a single #
## To change the default settings, you need both to uncomment the lines
## AND, in most cases, to change the value that is given.
## - Take care to keep proper indentation, that is by simply deleting
## the original #, with no additional space before the setting's name.
## - Take care to keep proper quoting. All ' must have a matching ' at
## the end of the same line. The same goes for "
## - Lines containing "## Section" are section headings. Do not edit them!
## - Lists need the space after the -
## - The values true, false and numbers should have no quote marks.
## Single words don't need quote marks, but it doesn't do any harm to have them.
##
## You can set and/or override all these settings through environment variables
## with the following conversion rules:
## - Strip the top level namespace (configuration, production, etc.)
## - Build the path to the setting, for example environment.s3.enable
## - Replace the dots with underscores: environment_s3_enable
## - Convert to upper case: ENVIRONMENT_S3_ENABLE
## - Specify lists/arrays as comma-separated values
##
## - For example, on Heroku:
## heroku config:set SERVICES_FACEBOOK_APP_ID=yourappid SERVICES_FACEBOOK_SECRET=yourappsecret
configuration: ## Section
## You need to change or at least review the settings in this section
## in order for your pod to work
environment: ## Section
## Set the hostname of the machine you're running Diaspora on, as seen
## from the internet. This should be the URL you want to use to
## access the pod. So if you plan to use a reverse proxy, it should be
## the URL the proxy listens on. DO NOT CHANGE THIS AFTER INITIAL SETUP!
## However changing http to https is okay and has no consequences.
## If you do change the URL, you will have to start again as the URL
## will be hardcoded into the database.
url: "FULLURLTOCHANGE"
## Set the bundle of certificate authorities (CA) certificates.
## This is specific to your operating system.
## Examples (uncomment the relevant one or add your own):
## For Debian, Ubuntu, Archlinux, Gentoo (package ca-certificates):
certificate_authorities: '/etc/ssl/certs/ca-certificates.crt'
## For CentOS, Fedora:
#certificate_authorities: '/etc/pki/tls/certs/ca-bundle.crt'
## URL for a remote Redis (default=localhost)
## Don't forget to restrict IP access if you uncomment these!
#redis: 'redis://example_host'
#redis: 'redis://username:password@host:6379/0'
#redis: 'unix:///tmp/redis.sock'
## Require SSL (default=true)
## When set, your pod will force the use of HTTPS in production mode. Since
## OAuth2 requires SSL Diaspora's future API might not work if you're not using
## SSL. Also there is no guarantee that posting to services will be possible
## if SSL is disabled. Do not change this default unless you are sure!
require_ssl: false
## Single-process mode (default=false)
## If set to true Diaspora will work with just the appserver (Unicorn by default)
## running. However, this makes it quite slow as intensive jobs must be run
## all the time inside the request cycle. We strongly recommended you leave
## this disabled for production setups. Set to true to enable.
#single_process_mode: false
## Sidekiq - background processing
sidekiq: ## Section
## Number of parallel threads Sidekiq uses (default=5)
## If you touch this please set the pool setting in your database.yml to
## a value that's at minimum close to this! You can safely increase it
## to 25 and more on a medium-sized pod. This applies per started Sidekiq
## worker, so if you set it to 25 and start two workers you'll process
## up to 50 jobs in parallel.
#concurrency: 5
## Number of times a job is retried (default=10)
## There's an exponential effect to this: if you set this too high you
## might get too many jobs building up in the queue.
## Set it to false to disable it completely.
#retry: 10
## Namespace to use in Redis. Useful if you need to run
## multiple instances of Diaspora using the same Redis instance.
#namespace: "diaspora"
## Lines of backtrace that are stored on failure (default=15)
## Set n to the required value. Set this to false to reduce memory
## usage (and log size) if you're not interested in this data.
#backtrace: 15
## Log file for Sidekiq (default="log/sidekiq.log")
#log: "log/sidekiq.log"
## Use Amazon S3 instead of your local filesystem
## to handle uploaded pictures (disabled by default)
s3: ## Section
#enable: true
#key: 'change_me'
#secret: 'change_me'
#bucket: 'my_photos'
#region: 'us-east-1'
## Use max-age header on Amazon S3 resources (default=true)
## When true, this allows locally cached images to be served for up to
## 1 year. This can improve load speed and save requests to the image host.
## Set to false to revert to browser defaults (usually less than 1 year).
#cache : true
## Set redirect URL for an external image host (Amazon S3 or other)
## If hosting images for your pod on an external server (even your own),
## add its URL here. All requests made to images under /uploads/images
## will be redirected to https://yourhost.tld/uploads/images/
#image_redirect_url: 'https://images.example.org'
assets: ## Section
## Serve static assets via the appserver (default=false)
## This is highly discouraged for production use. Let your reverse
## proxy/webserver do it by serving the files under public/ directly.
#serve: false
## Upload your assets to S3 (default=false)
#upload: false
## Specify an asset host. Ensure it does not have a trailing slash (/).
#host: http://cdn.example.org/diaspora
## Pubsub server (default='https://pubsubhubbub.appspot.com/')
## Diaspora is only tested against the default pubsub server.
## You probably don't want to uncomment or change this.
#pubsub_server: 'https://pubsubhubbub.appspot.com/'
## Settings affecting how ./script/server behaves.
server: ## Section
## The port on which the appserver should listen (default=3000):
#port: 3000
## Rails environment (default='development')
## The environment in which the server should be started by default.
## Change this if you wish to run a production environment.
rails_environment: 'production'
## Write unicorn stderr and stdout log
#stderr_log: '/usr/local/app/diaspora/log/unicorn-stderr.log'
#stdout_log: '/usr/local/app/diaspora/log/unicorn-stdout.log'
## Number of Unicorn worker processes (default=2)
## Increase this if you have many users.
#unicorn_worker: 2
## Number of seconds before a request is aborted (default=90)
## Increase if you get empty responses, or if large image uploads fail.
## Decrease if you're under heavy load and don't care if some
## requests fail.
#unicorn_timeout: 90
## Embed a Sidekiq worker inside the unicorn process (default=false)
## Useful for minimal Heroku setups.
#embed_sidekiq_worker: false
## Number of Sidekiq worker processes (default=1)
## In most cases it is better to
## increase environment.sidekiq.concurrency instead!
#sidekiq_workers: 1
## Settings potentially affecting the privacy of your users
privacy: ## Section
## Include jQuery from jquery.com's CDN (default=true)
## This can save you some traffic and speeds up load time since most
## clients already have this one cached. Set this to false if you want
## the jQuery library to be loaded from your pod's own resources.
#jquery_cdn: true
## Google Analytics (disabled by default)
## Provide a key to enable tracking by Google Analytics
#google_analytics_key:
## Piwik Tracking (disabled by default)
## Provide a site ID and the host piwik is running on to enable
## tracking through Piwik.
piwik: ## Section
#enable: true
#host: 'stats.example.org'
#site_id: 1
## Mixpanel event tracking (disabled by default)
#mixpanel_uid:
## Chartbeat tracking (disabled by default)
#chartbeat_uid:
## Statistics
## Your pod will report its name, software version and whether
## or not registrations are open via /statistics.json.
## Uncomment the options below to enable more statistics.
statistics: ## Section
## Local user total and 6 month active counts
#user_counts: true
## Local post total count
#post_counts: true
#comment_counts: true
## General settings
settings: ## Section
## Pod name (default="diaspora*")
## The pod name displayed in various locations, including the header.
#pod_name: "diaspora*"
## Allow registrations (default=true)
## Set this to false to prevent people from signing up for your pod
## without an invitation. Note that this needs to be set to true
## (or commented out) to enable the first registration (you).
#enable_registrations: true
## Auto-follow on sign-up (default=true)
## Users will automatically follow a specified account on creation.
## Set this to false if you don't want your users to automatically
## follow an account upon creation.
#autofollow_on_join: true
## Auto-follow account (default='diasporahq@joindiaspora.com')
## The diaspora* HQ account keeps users up to date with news about Diaspora.
## If you set another auto-follow account (for example your podmin account),
## please consider resharing diaspora* HQ's posts for your pod's users!
#autofollow_on_join_user: 'diasporahq@joindiaspora.com'
## Invitation settings
invitations: ## Section
## Enable invitations (default=true)
## Set this to false if you don't want users to be able to send invites.
#open: true
## Number of invitations per invite link (default=25)
## Every user will see such a link if you have enabled invitations on your pod.
#count: 25
## Paypal donations
## You can provide the ID of a hosted Paypal button here to allow your users
## to send donations to help run their pod. If you leave this out your users
## will see a button to donate to the Diaspora Foundation instead :)
#paypal_hosted_button_id: "change_me"
## Bitcoin donations
## You can provide a bitcoin address here to allow your users to provide
## donations towards the running of their pod.
#bitcoin_address: "change_me"
## Community spotlight (disabled by default)
## The community spotlight shows new users public posts from people you
## think are interesting in Diaspora's community. To add an account
## to the community spotlight add the 'spotlight' role to it.
community_spotlight: ## Section
#enable: true
## E-mail address to which users can make suggestions about who
## should be in the community spotlight (optional).
#suggest_email: 'admin@example.org'
## CURL debug (default=false)
## Turn on extra verbose output when sending stuff. Note: you
## don't need to touch this unless explicitly told to.
#typhoeus_verbose: false
## Maximum number of parallel HTTP requests made to other pods (default=20)
## Be careful, raising this setting will heavily increase the memory usage
## of your Sidekiq workers.
#typhoeus_concurrency: 20
## Captcha settings
captcha: ## Section
## Enable captcha (default=true)
## Set this to false if you don't want to use captcha for signup process.
#enable: true
## Captcha image size (default='120x20')
#image_size: '120x20'
## Length of captcha text (default=5)
#captcha_length: 5
## Captcha image style (default='simply_green')
## Available options for captcha image styles are: 'simply_blue',
## 'simply_red' 'simply_green', 'charcoal_grey', 'embossed_silver',
## 'all_black', 'distorted_black', 'almost_invisible', 'random'
#image_style: 'simply_green'
## Captcha image distortion (default='low')
## Sets the level of image distortion used in the captcha.
## Available options are: 'low', 'medium', 'high', 'random'
#distortion: 'low'
## Terms of Service
## Show a default or customized terms of service for users.
## You can create a custom Terms of Service by placing a template
## as app/views/terms/terms.haml or app/views/terms/terms.erb
## The default terms of service that can be extended is
## at app/views/terms/default.haml
## NOTE! The default terms have not been checked over by a lawyer and
## thus are unlikely to provide full legal protection for all situations
## for a podmin using them. They are also not specific to all countries
## and jurisdictions. If you are unsure, please check with a lawyer.
## We provide these for podmins as some basic rules that podmins
## can communicate to users easily via the diaspora* server software.
## Uncomment to enable this feature.
terms: ## Section
# First enable it by uncommenting
#enable: true
## Important! If you enable the terms, you should always
## set a location under which laws any disputes are governed
## under. For example, country or state/country, depending
## on the country in question.
## If this is not set, the whole paragraph about governing
## laws *is not shown* in the terms page.
#jurisdiction: ""
## Age limit for signups
## Set a number to activate this setting. This age limit is shown
## in the default ToS document.
#minimum_age: false
## Posting from Diaspora to external services (all are disabled by default)
services: ## Section
## OAuth credentials for Facebook:
facebook: ## Section
#enable: true
#app_id: 'abcdef'
#secret: 'change_me'
## OAuth credentials for Twitter:
twitter: ## Section
#enable: true
#key: 'abcdef'
#secret: 'change_me'
## OAuth credentials for Tumblr
tumblr: ## Section
#enable: true
#key: 'abcdef'
#secret: 'change_me'
## OAuth credentials for Wordpress
wordpress: ## Section
#enable: true
#client_id: 'abcdef'
#secret: 'change_me'
## Enable pod users to send e-mails from Diaspora (disabled by default)
mail: ## Section
## First you need to enable it.
#enable: true
## Sender address used in mail sent by Diaspora
#sender_address: 'no-reply@example.org'
## This selects which mailer should be used. Use 'smtp' for a smtp
## connection, 'sendmail' to use the sendmail binary or
## 'messagebus' to use the messagebus service.
#method: 'smtp'
## Ignore if method isn't 'smtp'
smtp: ## Section
## Host and port of the smtp server handling outgoing mail.
## This should match the common name of the certificate sent by
## the SMTP server, if it sends one. (default port=587)
#host: 'smtp.example.org'
#port: 587
## Authentication required to send mail (default='plain')
## Use one of 'plain', 'login' or 'cram_md5'. Use 'none'
## if server does not support authentication.
#authentication: 'plain'
## Credentials to log in to the SMTP server
## May be necessary if authentication is not 'none'.
#username: 'change_me'
#password: 'change_me'
## Automatically enable TLS (default=true)
## Leave this commented out if authentication is set to 'none'.
#starttls_auto: true
## The domain for the HELO command, if needed
#domain: 'smtp.example.org'
## OpenSSL verify mode used when connecting to a SMTP server with TLS
## Set this to 'none' if you have a self-signed certificate. Possible
## values: 'none', 'peer', 'client_once', 'fail_if_no_peer_cert'.
#openssl_verify_mode: 'none'
## Ignore if method isn't 'sendmail'
sendmail: ## Section
## The path to the sendmail binary (default='/usr/sbin/sendmail')
#location: '/usr/sbin/sendmail'
## Use exim and sendmail (default=false)
#exim_fix: false
## Ignore if method isn't 'messagebus'
#message_bus_api_key: 'abcdef'
## Administrator settings
admins: ## Section
## Set the admin account
## This doesn't make the user an admin but is used when a generic
## admin contact is needed, much like the postmaster role in mail
## systems. Set only the username, NOT the full ID.
#account: "podmaster"
## E-mail address to contact the administrator
#podmin_email: 'podmin@example.org'
## Here you can override settings defined above if you need
## to have them different in different environments.
production: ## Section
environment: ## Section
#redis_url: 'redis://production.example.org:6379'
development: ## Section
environment: ## Section
#redis_url: 'redis://production.example.org:6379'

30
conf/nginx.conf Normal file
View file

@ -0,0 +1,30 @@
location PATHTOCHANGE {
alias ALIASTOCHANGE/public;
# Configure maximum picture size
# Note that Diaspora has a client side check set at 4M
client_max_body_size 5M;
client_body_buffer_size 256K;
# Proxy if requested file not found
try_files $uri @diaspora;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://diaspora_server;
# Include SSOWAT user panel.
include conf.d/yunohost_panel.conf.inc;
}
# Proxy destination
# Add as many server directives as you want
# Also takes a socket, like unix:/path/to/some/socket.sock
upstream diaspora_server {
server 127.0.0.1:3000;
}

49
manifest.json Normal file
View file

@ -0,0 +1,49 @@
{
"name": "Diaspora",
"id": "diaspora",
"description": {
"en": "Distributed social networking service",
"fr": "Service de réseau social distribué"
},
"developer": {
"name": "aymhce",
"email": "aymhce@gmail.com",
"url": "http://diasporafoundation.org"
},
"multi_instance": "true",
"arguments": {
"install" : [
{
"name": "domain",
"ask": {
"en": "Choose a domain for Diaspora"
},
"example": "domain.org"
},
{
"name": "path",
"ask": {
"en": "Choose a path for Diaspora"
},
"example": "/diaspora",
"default": "/diaspora"
},
{
"name": "admin",
"ask": {
"en": "Choose the Diaspora administrator (must be an existing YunoHost user)"
},
"example": "homer"
},
{
"name": "public_site",
"ask": {
"en": "Is it a public Diaspora site ?",
"fr": "Est-ce un site public ?"
},
"choices": ["Yes", "No"],
"default": "Yes"
}
]
}
}

124
scripts/install Normal file
View file

@ -0,0 +1,124 @@
#!/bin/bash
# Retrieve arguments
domain=$1
path=$2
user=$3
is_public=$4
# Check user parameter
sudo yunohost user list --json | grep -q "\"username\": \"$user\""
if [[ ! $? -eq 0 ]]; then
echo "Wrong user"
exit 1
fi
sudo yunohost app setting diaspora admin_user -v $user
# Check domain/path availability
sudo yunohost app checkurl $domain$path -a diaspora
if [[ ! $? -eq 0 ]]; then
exit 1
fi
ori_path=$(pwd)
final_path=/var/www/diaspora
full_url=https://$domain$path
# configure sys apt-get
cat /etc/apt/sources.list | grep -q backports
[ $? != 0 ] && sudo su -c "echo 'deb http://http.debian.net/debian wheezy-backports main' >> /etc/apt/sources.list"
# get sys deps
sudo apt-get update
sudo apt-get install gawk libyaml-dev libsqlite3-dev sqlite3 autoconf libgdbm-dev libncurses5-dev automake bison libffi-dev\
build-essential libssl-dev libcurl4-openssl-dev libxml2-dev libxslt-dev imagemagick ghostscript git curl libmysqlclient-dev\
libmagickwand-dev nodejs-legacy npm -y
sudo apt-get install -t wheezy-backports redis-server -y
# get source code
git clone -b master git://github.com/diaspora/diaspora.git
mv diaspora $final_path
sudo chown -R diaspora:diaspora $final_path
# Generate random password
db_pwd=$(dd if=/dev/urandom bs=1 count=200 2> /dev/null | tr -c -d 'A-Za-z0-9' | sed -n 's/\(.\{24\}\).*/\1/p')
# Use 'diaspora' as database name and user
db_user=diaspora
# Initialize database and store mysql password for upgrade
sudo yunohost app initdb $db_user -p $db_pwd -d diaspora_production
sudo yunohost app setting diaspora mysqlpwd -v $db_pwd
# prepare and copy diaspora config file
sed -i "s@FULLURLTOCHANGE@$full_url@g" ../conf/diaspora.yml
sed -i "s@DBUSERTOCHANGE@$db_user@g" ../conf/database.yml
sed -i "s@DBPASSTOCHANGE@$db_user@g" ../conf/database.yml
sudo cp ../conf/diaspora.yml $final_path/config/
sudo cp ../conf/database.yml $final_path/config/
sudo cp ../conf/diaspora.conf /etc/
sudo chown -R diaspora:diaspora $final_path
# install startup script
sudo cp ../conf/diaspora /etc/init.d/diaspora
sudo chmod 754 /etc/init.d/diaspora
sudo update-rc.d diaspora defaults
# create and config user
sudo adduser --gecos "First Last,RoomNumber,WorkPhone,HomePhone" --quiet --disabled-login --home /home/yunohost.app/diaspora diaspora
sudo mkdir -p /home/yunohost.app/diaspora
sudo chown -R diaspora:diaspora /home/yunohost.app/diaspora
sudo su diaspora
cd ~
echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"' >> ~/.bashrc
# Config RVM
curl -sSL https://rvm.io/mpapis.asc | gpg --import -
curl -L dspr.tk/1t | bash
. ~/.bashrc
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
rvm install 2.0
cd $final_path
# force get app deps (for debug)
gem install nokogiri -v '1.6.1'
gem install raindrops -v '0.13.0'
# construct diaspora app
RAILS_ENV=production bundle install --without test development
RAILS_ENV=production bundle exec rake db:create db:schema:load
RAILS_ENV=production bundle exec rake assets:precompile
# TODO a startup init.d script !!
#./script/server >/dev/null &
exit
cd $ori_path
# start service
sudo service diaspora start
# config nginx
sed -i "s@PATHTOCHANGE@$path@g" ../conf/nginx.conf
sed -i "s@ALIASTOCHANGE@$final_path/@g" ../conf/nginx.conf
sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/diaspora.conf
# Reload Nginx and regenerate SSOwat conf
sudo service nginx reload
sudo yunohost app setting diaspora skipped_uris -v "/"
sudo yunohost app ssowatconf
#protect URIs
if [ $is_public = "No" ];
then
sudo yunohost app setting diaspora protected_uris -v "/"
sudo yunohost app ssowatconf
fi

22
scripts/remove Normal file
View file

@ -0,0 +1,22 @@
#!/bin/bash
db_user=diaspora
db_name=diaspora
root_pwd=$(sudo cat /etc/yunohost/mysql)
domain=$(sudo yunohost app setting diaspora domain)
sudo service diaspora stop
mysql -u root -p$root_pwd -e "DROP DATABASE $db_name ; DROP USER $db_user@localhost ;"
sudo rm -rf /var/www/diaspora
sudo rm -f /etc/nginx/conf.d/$domain.d/diaspora.conf
sudo service nginx reload
sudo deluser --remove-home diaspora
sudo update-rc.d -f diaspora remove
sudo rm -f /etc/init.d/diaspora
sudo rm -f /etc/diaspora.conf