{"id":15051298,"url":"https://github.com/nextcloud/univention-app","last_synced_at":"2025-07-23T01:32:21.332Z","repository":{"id":17442448,"uuid":"80009885","full_name":"nextcloud/univention-app","owner":"nextcloud","description":"📦 Nextcloud App for the Univention Corporate Server","archived":false,"fork":false,"pushed_at":"2025-06-20T14:18:05.000Z","size":399606,"stargazers_count":35,"open_issues_count":9,"forks_count":19,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-06-20T15:30:18.026Z","etag":null,"topics":["docker","nextcloud","ucs","univention-corporate-server"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nextcloud.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-01-25T11:50:13.000Z","updated_at":"2025-04-29T14:51:55.000Z","dependencies_parsed_at":"2023-02-15T11:01:13.261Z","dependency_job_id":"ab4871c8-b55e-4322-b6b5-53c6322c40a8","html_url":"https://github.com/nextcloud/univention-app","commit_stats":null,"previous_names":[],"tags_count":105,"template":false,"template_full_name":null,"purl":"pkg:github/nextcloud/univention-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nextcloud%2Funivention-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nextcloud%2Funivention-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nextcloud%2Funivention-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nextcloud%2Funivention-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nextcloud","download_url":"https://codeload.github.com/nextcloud/univention-app/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nextcloud%2Funivention-app/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266602756,"owners_count":23954694,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","nextcloud","ucs","univention-corporate-server"],"created_at":"2024-09-24T21:33:02.511Z","updated_at":"2025-07-23T01:32:21.306Z","avatar_url":"https://github.com/nextcloud.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"This is the Nextcloud app for Univention Corporate Server (UCS). This installs, configures and integrates Nextcloud into  UCS.\n\nIt is a docker based app, not relying on the UCS image.\n\n# Features\n\n* registers an LDAP schema\n* add extended attributes so availability of Nextcloud to both users and group can be configured in *user/group settings* → *Advanced settings* → *Nextcloud*\n* for users also the quota can be configured\n* all users are enabled to login by default\n* Administrator user has also admin privileges on Nextcloud\n\n# Overview\n\n## Install\n\n* Nextcloud is preconfigured\n    * PostgreSQL DB\n    * Apache\n    * Base install\n    * LDAP Backend configuration\n    * Cron\n    * APCu as memcache\n* UCS integration\n    * user settings added: nextcloud enabled and quota\n    * group settings added: nextcloud enabled\n    * all users are set to be allowed to login to Nextcloud (login by uid)\n    * Administrator gets Nextcloud admin privileges\n\n## Upgrade\n\nTotally replaces the container. Data and Config are kept, upgrade routine kick off automatically.\n\n## Uninstall\n\nRemoves container, all system integrations (except Schema), keeps data\n\n\n# Tech info\n\n## Environment\n\n* UCS's PostgreSQL integration mechanism is being used.\n\n## Dockerfile\n\nThe Dockerfile install the base system (based on Ubuntu 16.04) and copies the Nextcloud files into place. Also file permissions are set accordingly.\n\nFurthermore unattended upgrades are enabled and the web server configured.\n\nThe entrypoint is a scrip that starts cron and eventually runs the web server in foreground.\n\n## Installation process\n\nWhen the UCS admin clicks on install Nextcloud following happens.\n\n### 1. Docker\n\nThe docker container will be created. If one is present, it will be replaced.\n\n### 2. Preinstall\n\nThe hostname  (retrieved from ucr) is saved within the permanent app config dir so setup within the Nextcloud container can do install and most basic configuration.\n\n### 3. before setup\n\nIf a config.php exists, it will be copied from the permanent app folder to the usual destination within Nextcloud.\n\n### 4. setup\n\nChecks are done whether Nextcloud is installed and being upgraded.\n\nOn install\n\n* The data directory (on the permanent app folder) will be created, if not existant,  and the permissions will be adjusted. \n* The admin password is created and placed as admin.secret in the permanent app conf directory\n* Nextcloud is being installed\n* Nextcloud is being configured:\n    - trusted domain\n    - disabling updatechecker (we rely on UCS AppCenter)\n    - proxy settings (we're behind a reverse proxy)\n    - .htaccess\n    - APCu is set as memcache\n    - cron is configured\n    - the ldap app is enabled\n\nIn any case, a Nextcloud upgrade routine is attempted (it does not do anything if not necessary).\n\n### 5. after setup\n\nThe current config.php is copied to the permanent app config folder.\n\n### 6. joining UCS (inst)\n\n#### Nextcloud service added to localhost\n\nJust on UCS Api call / bash method invocation\n\n#### Checks that some custom UCR variables are set\n\nThey also can be used for pre-configuration, however there are no dedicated GUI ways for this.\n\n#### member of support\n\nIt is checked whether ``univention-ldap-overlay-memberof`` is installed to figure out one configuration flag for the Nextcloud LDAP backend.\n\n#### register LDAP schema\n\nWith another single UCS bash method invocation.\n\n#### extended attributes\n\nSettings for enabling users and groups as well as setting user quota are registered.\n\n#### configure LDAP backend\n\nNextcloud's LDAP backend is configured.\n\nMost important:\n\n* all users and groups are whitelisted that are of objectclass ``nextcloudUser`` or ``nextcloudGroup`` and where ``nextcloudEnabled`` is set to ``1``.\n\n* The login attribute defaults to ``uid``.\n\n* The user search attributes default to ``uid;givenName;sn;employeeNumber;mailPrimaryAddress`` and the group search attributes to ``cn``.\n\n* The search base for users defaults to ``cn=users,LDAP_BASE`` and for groups to ``cn=groups,LDAP_BASE``. This means only users or groups underneath those default subtrees are considered. The search base can be changed before the installation by executing ``ucr set nextcloud/ldap/baseUsers=\"your-ldap-subtree\"`` and ``ucr set nextcloud/ldap/baseGroups=\"your-ldap-subtree\"`` on the UCS host or after the installation in the Nextcloud settings via Admin -\u003e LDAP / AD integration -\u003e Advanced -\u003e Directory Settings.\n\n#### modify users\n\nUnless on update or empty ``$nextcloud_ucs_modifyUsersFilter`` all Users resulting by this filter¹ are modified. ``nextcloudEnabled`` is set to ``$nextcloud_ucs_userEnabled`` (defaults to 1) and ``nextcloudQuota`` is set to ``$nextcloud_ucs_userQuota``(default to empty, i.e. unlimited).\n\n¹defaults to\n\n```\n(\u0026(|(\u0026(objectClass=posixAccount) (objectClass=shadowAccount)) (objectClass=univentionMail) (objectClass=sambaSamAccount) (objectClass=simpleSecurityObject) (\u0026(objectClass=person) (objectClass=organizationalPerson) (objectClass=inetOrgPerson))) (!(uidNumber=0)) (!(|(uid=*$) (uid=nextcloud-systemuser) (uid=join-backup) (uid=join-slave))) (!(objectClass=nextcloudUser)))\n```\n\n#### UCS user Administrator becomes admin\n\nThis works by adding this user to the local Nextcloud group \"admin\" and empowers him to administer Nextcloud. \n\n(This user can give admin rights by adding other Users within the Nextcloud user management to the \"admin\" group.)\n\n## Uninstallation process \n\nThe uninstall script makes sure that UCS is left clean from any Nextcloud tracks. A subsequent install will have a fresh and empty instance.\n\nThe Nextcloud service is removed from the localhost (UCS bash method invocation).\n\nFollowing steps are only done, when ``ucs_isServiceUnused`` returns ``true``.\n\n* Nextcloud custom attributes are removed\n* Nextcloud system user is removed\n* All Nextcloud ucr variables are unset\n\nThe Nextcloud PostgreSQL database and user are removed unconditionally, because the database resides on the docker host. The app folder /var/lib/univention-appcenter/apps/nextcloud/ is being deleted. To avoid this a manual backup has been done before (we can automatize it, but whereto?).\n\n## Upgrade process\n\nOn upgrade the Nextcloud docker container is removed and all not-permanent data vanished. Before this, the Nextcloud config is copied to the permanent app config directory.\n\nSubsequently the installation process kicks in. Therefore, all the upgrade switches in that logic :)\n\n## Creating a new release\n\nIf the Dockerfile changes, you first need to build the image. If not continue with tagging and pushing to docker. Background: the app version on UCS as well as the docker tag should be the same (not a technical necessity, but best practice).\n\nTo build the container (from within the dir where the Dockerfile is located, replace $name accordingly):\n\n``$ sudo docker  build -t $name .``\n\nTo tag, figure out the docker image id via ``sudo docker images``, eventually:\n\n``sudo docker tag $imageID $repo/$name:$version``\n\nand push it\n\n``sudo docker push $repo/$name:$version``\n\nIn the Univention Provider Portal, open the Hamburger menu of the app and click \"New app version\". Pick the source and the target version and hit \"Create\". In the  app settings go to the \"Docker\" section and adjust the Docker image (update the tag).\n\nClick the \"save\" icon and and the app is available in the test app center.\n\n\n## Deploying to App Portal\n\n### Prerequisites\n\nFirst, having an account and access to the UCS App Provider portal.\n\nSecond, follow http://wiki.univention.de/index.php?title=Provider_Portal/Apps#Prerequisites\n\n### Create a new version\n\n$ make add-version app_ver='11.0.3-0' app_newver='11.0.3-90'\n\n### Upload files\n\n$ make push-files\n\nuploads all files, except ``i18n/*/Short Description.html`` and ``i18n/*/Long Description.html``, Screenshots and Videos. These text can only be edited manually in the app provider portal. Also logos are not being uploaded.\n\nUploads go against the current Nextcloud app version as configured in the Makefile.\n\n### Create and upload docker image\n\nto create a local build use\n\n$ make docker\n\nin order to trigger a build on the docker hub tag it like\n\n$ git tag \"20.0.1-90\"\n\nand push.\n\n$ git push --atomic origin prepare-20.0.2 20.0.1-90\n\n### Prepare release\n\nTag the latest commit with the package name, e.g. `13.0.3-0` and push the tags. An automated build is configured at the docker hub.\n\n$ make push-files\n\nAfterwards, there are still two things that need to be done in the Provider Portal:\n\n1. Press the Publish button :)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnextcloud%2Funivention-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnextcloud%2Funivention-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnextcloud%2Funivention-app/lists"}