{"id":42755,"date":"2019-09-16T12:06:33","date_gmt":"2019-09-16T12:06:33","guid":{"rendered":"https:\/\/owncloud.com\/?p=42755"},"modified":"2023-01-16T15:30:01","modified_gmt":"2023-01-16T15:30:01","slug":"try-out-the-new-owncloud-phoenix-frontend-the-beta-is-here","status":"publish","type":"post","link":"https:\/\/owncloud.com\/de\/blogs\/try-out-the-new-owncloud-phoenix-frontend-the-beta-is-here\/","title":{"rendered":"Try Out the New ownCloud Phoenix Frontend \u2013 the Beta Is Here!"},"content":{"rendered":"<div class=\"headline-wrap\">\n<h1>Try Out the New ownCloud Phoenix Frontend \u2013 the Beta Is Here!<\/h1>\n<div class=\"excerpt bold\">\n<p>The new frontend is ready for testing! Phoenix opens a new era to the ownCloud ecosystem. Its architecture facilitates good design and UX decisions \u2013 but take a look and decide for yourself.<\/p>\n<\/div>\n<\/div>\n<div class=\"content\">\n<div class=\"accordion-content\">\n<article class=\"markdown\">Since\u00a0<a href=\"https:\/\/owncloud.org\/news\/owncloud-phoenix-rebirth-of-the-owncloud-user-interface\/\" target=\"_blank\" rel=\"noopener\">Phoenix was announced<\/a>\u00a0over a year ago, a lot of work went into the new frontend. Phoenix is still very beta, but the foundation is done. There will be multiple talks at the ownCloud Conference 2019 about Phoenix, going deeper into what is special about it.This blogpost will show how to get it running, so you can try it out. Best set up a testing ownCloud instance, and install Phoenix as an app. Users can then decide which frontend to use at the login screen and at the app switcher.<\/p>\n<p>This release is a Tech Preview: until now, only the architecture and the user-facing part work, and still need some design. There are rolling releases every friday now, to showcase the latest progress.<\/p>\n<p>When it\u2019s ready \u2013 what are the advantages of Phoenix over the old frontend? What is it good for, apart of being the shiny new thing? Well, a whole lot of things:<\/p>\n<h2>A New Architecture<\/h2>\n<p>The biggest difference between Phoenix and the old frontend is probably the\u00a0clear separation between frontend and backend. The old frontend is basically a part of the ownCloud core \u2013 Phoenix is completely separate, only communicates with the backend over clearly defined APIs, and consists purely out of html, css, and js.<\/p>\n<p>This makes not only for a more secure architecture, but has other advantages, too: you can run Phoenix completely separate, e.g.\u00a0run it in its own Docker container.\u00a0Scaling is far easier this way.<\/p>\n<p>Another thing which is coming with Phoenix is the\u00a0bigger focus on user experience\u00a0(UX). There are plans for UX feedback sessions, and the\u00a0<a href=\"https:\/\/owncloud.org\/news\/the-owncloud-design-system-phoenix-makes-frontend-development-easy\/\" target=\"_blank\" rel=\"noopener\">ownCloud Design System<\/a>\u00a0(ODS), which defines the UIKit components used in Phoenix, and contains basic UX guidelines.<\/p>\n<\/article>\n<\/div>\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-17252 alignnone\" src=\"https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-elements-buttons.png\" sizes=\"(max-width: 1001px) 100vw, 1001px\" srcset=\"https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-elements-buttons.png 1001w, https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-elements-buttons-300x256.png 300w, https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-elements-buttons-768x655.png 768w\" alt=\"Some example buttons.\" width=\"501\" height=\"427\" \/><figcaption><em>Developers can find pre-defined components in the ownCloud Design Systems, e.g. these buttons.<\/em><\/figcaption><\/figure>\n<p>Everyone who writes an app for Phoenix can use the\u00a0<a href=\"https:\/\/owncloud.org\/news\/the-owncloud-design-system-phoenix-makes-frontend-development-easy\/\" target=\"_blank\" rel=\"noopener\">ODS<\/a>\u00a0components, and is directly confronted with the UX guidelines, too. This leads to a\u00a0streamlined behavior across different ownCloud Server apps, and makes contributing very easy.<\/p>\n<p>The vueJS framework is not only great for contributing \u2013 it is also popular for its\u00a0great performance. The separation between frontend and backend facilitates optimizations, as you can track down bottlenecks easier. All in all, Phoenix is great news for everyone who likes responsive websites.<\/p>\n<p>And the final advantage of Phoenix is its maintainability \u2013 the clear architecture and the readability of vueJS make it very easy to maintain Phoenix, as well as Phoenix apps. That way, we can pay more attention to every contribution, increasing overall code quality.<\/p>\n<h2>How to Setup the Phoenix Beta in a Testing Environment<\/h2>\n<p>To setup Phoenix,\u00a0you need a running ownCloud server, with at least version 10.2.1.\u00a0The easiest way is to\u00a0<a href=\"https:\/\/owncloud.org\/news\/how-to-set-up-an-owncloud-in-3-minutes\/\" target=\"_blank\" rel=\"noopener\">set it up with Docker<\/a>\u00a0on your laptop, or on\u00a0<a href=\"https:\/\/labs.play-with-docker.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">labs.play-with-docker.com<\/a>. This way, the installation doesn\u2019t affect your system, and you can easily try it out.<\/p>\n<p>So run an ownCloud with docker-compose, as described\u00a0<a href=\"https:\/\/owncloud.org\/news\/how-to-set-up-an-owncloud-in-3-minutes\/\" target=\"_blank\" rel=\"noopener\">in our guide<\/a>. Then you can access the command line in the ownCloud container; do so with\u00a0<code>docker exec -ti server_owncloud_1 bash<\/code>. If this doesn\u2019t work, because your ownCloud container isn\u2019t called\u00a0<code>server_owncloud_1<\/code>, you can find out its actual name with\u00a0<code>docker ps<\/code>.<\/p>\n<p>Then you can\u00a0install Phoenix via the command line:<\/p>\n<p><code>mkdir -p \/var\/www\/owncloud\/apps\/phoenix<\/code><br \/>\n<code>cd \/var\/www\/owncloud\/apps\/phoenix<br \/>\nwget https:\/\/github.com\/owncloud\/phoenix\/releases\/download\/0.2.1\/phoenix.tar.gz<br \/>\ntar -xvf phoenix.tar.gz<br \/>\nocc market:install oauth2<br \/>\nocc app:enable phoenix<\/code><\/p>\n<p>Now the Phoenix app will show up in the app chooser\u00a0in the web interface when logged in. If you switch to it, you will see a big Authorize button for authorizing with OAuth2.<\/p>\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-19749 alignnone\" src=\"https:\/\/owncloud.org\/wp-content\/uploads\/2019\/09\/ownCloud-phoenix-app-chooser.png\" sizes=\"(max-width: 985px) 100vw, 985px\" srcset=\"https:\/\/owncloud.org\/wp-content\/uploads\/2019\/09\/ownCloud-phoenix-app-chooser.png 985w, https:\/\/owncloud.org\/wp-content\/uploads\/2019\/09\/ownCloud-phoenix-app-chooser-300x129.png 300w, https:\/\/owncloud.org\/wp-content\/uploads\/2019\/09\/ownCloud-phoenix-app-chooser-768x331.png 768w\" alt=\"ownCloud phoenix app chooser\" width=\"499\" height=\"215\" \/><figcaption><em>Access the Phoenix app through the app chooser.<\/em><\/figcaption><\/figure>\n<h3>Configuring OAuth2<\/h3>\n<p>Clicking on authorize won\u2019t work yet, unless you make some changes to the Phoenix config. If you closed the shell we opened above, you can edit it with\u00a0<code>docker exec -ti server_owncloud_1 vim apps\/phoenix\/config.json<\/code>.<\/p>\n<p>We need to add the server name, in my case\u00a0<code>\"server\" : \"http:\/\/localhost\",<\/code>, and we need to add the OAuth2 clientID, url, and authurl, so the Phoenix app can get authorized. You can\u00a0generate a clientID in the settings:<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-19746 alignnone\" src=\"https:\/\/owncloud.org\/wp-content\/uploads\/2019\/09\/ownCloud-phoenix-clientID-OAuth2.png\" sizes=\"(max-width: 932px) 100vw, 932px\" srcset=\"https:\/\/owncloud.org\/wp-content\/uploads\/2019\/09\/ownCloud-phoenix-clientID-OAuth2.png 932w, https:\/\/owncloud.org\/wp-content\/uploads\/2019\/09\/ownCloud-phoenix-clientID-OAuth2-300x194.png 300w, https:\/\/owncloud.org\/wp-content\/uploads\/2019\/09\/ownCloud-phoenix-clientID-OAuth2-768x496.png 768w\" alt=\"Add a description and the callback URL to generate a client ID.\" width=\"500\" height=\"323\" \/><figcaption><em>You can generate a client ID in the admin settings. Just add a callback URL like http:\/\/localhost\/apps\/phoenix\/oidc-callback.html.<\/em><\/figcaption><\/figure>\n<\/div>\n<p>The callback URL needs to be something like\u00a0<code>http:\/\/localhost\/apps\/phoenix\/oidc-callback.html<\/code>, just\u00a0substitute your domain\u00a0if you don\u2019t run the server on your local machine. Then you can copy-paste the client ID \u2013 we don\u2019t need the client secret.<\/p>\n<p>After you added all these things to the config, your config.json should look similar to this:<\/p>\n<pre class=\"wp-block-code\"><code>{\r\n  \"server\" : \"http:\/\/localhost\",\r\n  \"theme\": \"owncloud\",\r\n  \"version\": \"0.1.0\",\r\n  \"auth\": {\r\n    \"clientId\": \"1HO23PZlQv7kCG4qR--------------------------------\",\r\n    \"url\": \"http:\/\/localhost\/index.php\/apps\/oauth2\/api\/v1\/token\",\r\n    \"authUrl\": \"http:\/\/localhost\/index.php\/apps\/oauth2\/authorize\"\r\n  },\r\n  \"apps\" : [\r\n    \"files\"\r\n  ]\r\n}<\/code><\/pre>\n<p>You might need to adjust these values for your domain or for play-with-docker.<\/p>\n<p>Now if you empty the browser cache and reload, the authorize button should work! Click on the second authorize button, too, and you will be redirected to the Phoenix frontend. Voil\u00e0! Now you can try out the current state of the project.<\/p>\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-17266 alignnone\" src=\"https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-preview-2-1024x502.png\" sizes=\"(max-width: 1024px) 100vw, 1024px\" srcset=\"https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-preview-2-1024x502.png 1024w, https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-preview-2-300x147.png 300w, https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-preview-2-768x376.png 768w, https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-preview-2-1800x882.png 1800w, https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-preview-2-1320x646.png 1320w, https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-preview-2.png 1905w\" alt=\"A preview of the new Phoenix UI\" width=\"500\" height=\"245\" \/><figcaption><em>The current state of Phoenix \u2013 there are already many components to create pages and apps.<\/em><\/figcaption><\/figure>\n<h3>Enable Trash Bin and Private\/Public Links<\/h3>\n<p>The trash bin and public\/private link features in Phoenix need some APIs which are in \u201cbeta\u201d phase. For testing those features you need ownCloud Server version 10.3, which will come out soon. You can use the\u00a0<a href=\"https:\/\/hub.docker.com\/layers\/owncloud\/server\/10.3.0-alpha2\/images\/sha256-3e68bd8bdadeab14e964bcfa606e05e5920062be60b1d27600336abb60c9653c\" target=\"_blank\" rel=\"noreferrer noopener\">alpha2<\/a>\u00a0to try it out.<\/p>\n<p>To make those features work, we need two additional config settings in the\u00a0<code>config.php<\/code>. Edit them with\u00a0<code>docker exec -ti server_owncloud_1 vim config\/config.php<\/code>.<\/p>\n<p>We need to allow the experimental APIs:\u00a0<code>dav.enable.tech_preview =&gt; true,<\/code>\u00a0and we need to add the Phoenix URL to the config.php, in my case:\u00a0<code>'phoenix.baseUrl' =&gt; 'http:\/\/localhost\/apps\/phoenix',<\/code><\/p>\n<p>With this setup, you can try out everything which is already in Phoenix!<\/p>\n<h2>Next Development Steps<\/h2>\n<p>As mentioned above, Phoenix is work in progress \u2013 even though there were some big steps\u00a0<a href=\"https:\/\/conference.owncloud.org\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"before the conference (opens in a new tab)\">before the conference<\/a>, so we can build on this progress during oCCon19. The ownCloud conference is also a great place for feedback \u2013 all the developers will be there.<\/p>\n<p>The next steps will include a lot of\u00a0focus on UX\u00a0and tackling the\u00a0admin interface, which is not yet available at all. Soon Phoenix will be a working replacement for the old web interface!<\/p>\n<h2>Try it Out!<\/h2>\n<p>So now, as you know how to set it up, it\u2019s the perfect time to get started! There are rolling releases from now on, so you can expect a new version every friday.<\/p>\n<p>You can get the latest release here:<\/p>\n<p><a class=\"button-oc\" href=\"https:\/\/github.com\/owncloud\/phoenix\/releases\" target=\"_blank\" rel=\"noopener noreferrer\">Get the latest Phoenix release!<\/a><\/p>\n<p>What do you think about Phoenix? Leave a comment below or share this post on social media!<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>The new frontend is ready for testing! Phoenix opens a new era to the ownCloud ecosystem. Its architecture facilitates good design and UX decisions \u2013 but take a look and decide for yourself.<\/p>\n","protected":false},"author":7,"featured_media":42756,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","inline_featured_image":false,"footnotes":""},"categories":[43,603],"tags":[],"class_list":["post-42755","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","category-apps"],"acf":[],"_links":{"self":[{"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/posts\/42755","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/comments?post=42755"}],"version-history":[{"count":1,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/posts\/42755\/revisions"}],"predecessor-version":[{"id":68031,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/posts\/42755\/revisions\/68031"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/media\/42756"}],"wp:attachment":[{"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/media?parent=42755"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/categories?post=42755"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/tags?post=42755"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}