Nextcloud Server, a safe home for all your data https://github.com/nextcloud/server
Go to file
3wc 28425b6138 Goodbye, emojis! 😢
[ci skip]
2021-11-23 12:19:05 +02:00
.vscode dev: added chellcheck settings for vscode users 2021-05-05 09:57:05 +01:00
.drone.yml Attempt to ignore mariadb upgrade 2021-07-12 11:26:01 +02:00
.env.sample Make admin user configurable 2021-02-15 01:09:04 +01:00
.gitignore Fix secrets & network definition 2020-06-29 14:29:16 +02:00
README.md Goodbye, emojis! 😢 2021-11-23 12:19:05 +02:00
abra.sh fix: increase packets to avoid comm timeouts 2021-11-15 11:30:08 +01:00
compose.yml fix: use correct file type 2021-09-15 12:16:05 +02:00
fpm-tune.ini Skip those unknown things for php-fpm 2021-09-15 10:57:27 +02:00
my-tune.cnf fix: increase packets to avoid comm timeouts 2021-11-15 11:30:08 +01:00
nginx.conf.tmpl Working nginx config 2021-08-26 12:08:03 +02:00
renovate.json Attempt to ignore mariadb upgrade 2021-07-12 11:26:01 +02:00

README.md

Nextcloud

Build Status

Fully automated luxury Nextcloud via docker-swarm.

  • Category: Apps
  • Status: 2, beta
  • Image: nextcloud, 4, upstream
  • Healthcheck: Yes
  • Backups: No
  • Email: 3
  • Tests: 2
  • SSO: 1 (OAuth)

Basic usage

  1. Set up Docker Swarm and abra
  2. Deploy coop-cloud/traefik
  3. abra app new nextcloud --secrets (optionally with --pass if you'd like to save secrets in pass)
  4. abra app YOURAPPDOMAIN config - be sure to change $DOMAIN to something that resolves to your Docker swarm box
  5. abra app YOURAPPDOMAIN deploy

How do I customise the default home page when logging in?

  • Delete the dashboard app since it is so corporate
  • Follow these docs to set the default files list for each user in the Files app
  • Configure a defaultapp in your config.php or use apporder

Running occ

abra app run --user www-data YOURAPPDOMAIN app occ user:list --help

Upgrading Nextcloud apps

abra app run --user www-data YOURAPPDOMAIN app occ app:update --all

How do I integrate with Keycloak SSO?

Use this plugin. Unlike the plugin it's forked from, there is no configuration UI, so you'll need to edit /var/www/html/config/config.php:

  'oidc_login_client_id' => 'nextcloud',
  'oidc_login_client_secret' => 'mysecret',
  'oidc_login_provider_url' => 'https://example.com/auth/realms/myrealm',
  'oidc_login_disable_registration' => false,
  'oidc_login_hide_password_form' => true,
  'oidc_login_button_text' => 'Log in with your myssodomain',
  'oidc_login_default_group' => 'mygroup',
  'oidc_login_attributes' =>
  array (
    'id' => 'sub',
    'name' => 'name',
    'mail' => 'email',
  ),
  'oidc_create_groups' => true,

You can use this trick (see "Cryptic Usernames" work-around) to get proper usernames.

If you ever need to change the realm, you'll need to reset the cache with:

docker exec -u www-data <container-id> php occ config:app:delete oidc_login last_updated_well_known
docker exec -u www-data <container-id> php occ config:app:delete oidc_login last_updated_jwks

How can I customise the CSS?

There is some basic stuff in the admin settings.

To go a little deeper, you can use this handy app.

Here is an example CSS config which hides the local login and makes space for a central image:

#body-login .wrapper main form[name="login"],
#body-login .wrapper main form[name="login"] ~ a {
  display: none;
}

#body-login .logo {
  visibility: hidden;
}

#body-login #alternative-logins a.button[href*="oidc"] {
  background: #233b4a;
  color: #fff;
  transition: all 0.2s ease-in-out;
}
#body-login #alternative-logins a.button[href*="oidc"]:hover {
  background: linear-gradient(-35deg, #233b4a 40%, #486c83 100%);
}

#body-login #alternative-logins a.button[href*="/sociallogin/oauth/google"] {
  border: 0;
  color: #db4437 !important;
  background-color: #fff;
}

#body-login
  #alternative-logins
  a.button[href*="/sociallogin/oauth/google"]::before {
  width: 25px;
  background-color: #db4437;
  border-radius: 100%;
  background-size: 60%;
  background-position: center;
  height: 25px;
  vertical-align: middle;
  margin-right: 4px;
}

#body-login main {
  padding: 50vh 0 0 0;
}

#body-login a[href*="#body-login"] {
  visibility: hidden;
}

#body-login footer a,
#body-login footer p {
  color: #233b4a;
}

#body-login footer a:hover {
  color: #fff;
}

#body-login footer p.info {
  text-shadow: none;
}