Code Monkey home page Code Monkey logo

docker-owncloud's Introduction

docker-owncloud

4 June 2016 Update: It looks to me like some major thing just happend to ownCloud. Apparently a significant number of the core ownCloud devs have jumped ship and started a new cloud thingy called Nextcloud. I've made a docker container and associated github repo just like this one to follow nextcloud too. I'll keep supporting this project along side the new Nextcloud one until I can see a winner.

Simple to use Docker container with the latest stable ownCloud server release, complete with all the bells and whistles. This project is 100% transparent and trustable, every file in the resulting docker image is traceable and inspectable by following up the docker image depenancy tree which starts with my Arch Linux base image.

Please report any issues or improvement ideas to the github issue tracker
Pull requests welcome! Let's work together!

Say thanks by adding a star here and/or here.

Check out the wiki for some stuff that I didn't include here because I thought the readme was getting too big. Feel free to add new content to the wiki as you see fit.

Features

  • NEW FEATURE: Try the latest ownCloud daily build by using l3iggs/owncloud:daily
  • Streamlined Let's Encrypt functionality built right in
    • This will fetch valid, trusted and free SSL certs for your domain and install them into the image!
    • Hurray for green lock icons!
  • Superfast
    • Uses PHP7 with APCu and Zend OpCache for maximum performance
  • Now with image version tags corresponding to OwnCloud release versions
    • So you won't get unexpectedly upgraded and you can safely stay on an OC version you know is working for you
  • Built in (optional) MySQL database server (faster than sqlite default)
    • Or specify your own pre-existing database server during setup
  • Web GUI driven initial setup of user/password/database
  • Based on Arch Linux ensuring everything is cutting edge & up to date
  • SSL (HTTPS) encryption works out-of-the-box
    • Tweaked for maximum security while maintaining compatibility
  • Optionally enable automatic SSL certificate regeneration at runtime for maximum security
    • Or easily incorporate your own SSL certificates
  • In-browser document viewing and editing ready (.odt, .doc, and .docx)
  • In-browser media viewing ready (pretty much everything I think)
  • Comes complete with all of the official ownCloud apps pre-installed:
  • Bookmarks
  • Calendar
  • Contacts
  • Documents
  • Gallery
  • Or install your own 3rd party apps

Usage

  1. Install docker
  2. Download and start the owncloud server instance
docker run --name oc -p 80:80 -p 443:443 -d l3iggs/owncloud

NOTE: In case you have an outdated version of l3iggs/owncloud you can update it with docker pull l3iggs/owncloud before you run the server via the above docker run... command

  1. Access your ownCloud server
    Point your web browser to https://localhost/owncloud
  2. Setup ownCloud
    Follow the on-screen instructions to perform the initial setup of your server.
  3. [Optional] Harden security
    This image comes complete with a self-signed ssl certificate already built in, so https access is ready to go out of the box. I've provided this pre-generated certificate for convienence and testing purposes only. It affords greatly reduced security (compared to using secret certificates) since the "private" key is not actually private; anyone can download this image and inspect the keys and then decrypt your ownCloud traffic (sniffing your login credentials for example). To make the ssl connection to this ownCloud server secure, you can:
    (A) provide your own (secret) ssl certificate files
    (B) use the script provided here to generate new, self-signed certificate files
    or
    (C) use the script provided here to fetch (free) certificates for your domain from the Let's Encrypt project
    All of these will provide equal security (since the encryption key will be kept secret) but (B) will result in browser warnings whenever somone visits your site since the web browser will likely not trust your self-generated and self-signed keys.

For option (A) (providing your own SSL cert files):
The Apache config file calls out the need for two files here: SSLCertificateFile and SSLCertificateKeyFile. You should have those before you start. Name your certificate file fullchain.pem and your key file privkey.pem and put them in a directory ~/sslCert on your host machine, then run (also on your host machine):

sudo chown -R root ~/sslCert
sudo chgrp -R root ~/sslCert  
sudo chmod 400 ~/sslCert/privkey.pem

Then insert the following into the docker startup command (from step 2. above) between run and --name:

-v ~/sslCert:/root/sslKeys

For option (B) (using the built-in script to re-generate your own self-signed ssl certificate):

  • The image includes a bash script (/usr/sbin/setup-apache-ssl-key) that generates new ssl cert files on command (and overwrites the pregenerated ones included in this image). You can use this script to regenerate a new SSL key anytime, on the fly. After starting the docker image as described above, run the following command:
docker exec -it oc sh -c 'SUBJECT="/C=US/ST=CA/L=CITY/O=ORGANIZATION/OU=UNIT/CN=localhost" DO_SSL_SELF_GENERATION=true setup-apache-ssl-key'  
  • To have a new ssl certificate generated automatically every time the image is started, insert the following into the docker startup command (from step 2. above) between run and --name:
-e DO_SSL_SELF_GENERATION=true -e SUBJECT=/C=US/ST=CA/L=CITY/O=ORGANIZATION/OU=UNIT/CN=localhost

The SUBJECT variable is actually optional here, but I put it in there to show how to change the generated certificate to your liking, especially important if you don't want your certificate to be for localhost


For option (C) (fetching a free, trusted cert from letsencrypt.org):
For this to work, this container must be reachable from the internet by visiting http://your.domain.tld (where "your.domain.tld" will obviously be unique to you). In fact, a Let's Encrypt robot will attempt to visit this address via port 80 to read files served up by the apache server in this container during the certificate fetching process to verify your ownership of the domain.
Start the docker image as described above, except you must specify your hostname: add --hostname=your.domain.tld between run and --name. Then once the container is running, issue the following command (substituting your proper email address):

docker exec -it oc sh -c '[email protected] DO_SSL_LETS_ENCRYPT_FETCH=true setup-apache-ssl-key'  

~30 seconds later you should get a green lock in your browser when visiting your OC server at https://your.domain.tld/owncloud
Now save your newly fetched certificate files somewhere safe:

docker cp oc:/etc/letsencrypt/archive/your.domain.tld ~/letsencryptFor_your.domain.tld

and next time you use docker to start your OC server container, use option (A) to feed your .key and .crt files into the image when it starts.
NOTE: Let's Encrypt gives you a certificate that's valid for three months, afterwhich it needs to be renewed if you'd like to continue getting green locks in your browser. If you run the above DO_SSL_LETS_ENCRYPT_FETCH=true setup-apache-ssl-key command, and then you leave your server running without restarting for three months or longer, your certificate should be auto-renewed forever. If you restart the container, you'll probably need to re-issue the DO_SSL_LETS_ENCRYPT_FETCH=true setup-apache-ssl-key command again manually if you don't want your certificate to expire three months after you first fetched it.
NOTE #2: Let's Encrypt has a strict rate limiting policy; it will only grant 5 certificates / 7 days / domain so be very careful with how often you issue the DO_SSL_LETS_ENCRYPT_FETCH=true setup-apache-ssl-key command above

  1. [Optional] Stop the docker-owncloud server instance
docker stop oc

You can restart the container later with docker start oc

  1. [Optional] Delete the docker-owncloud server instance (after stopping it)
docker rm oc #<--WARNING: this will delete anything stored inside the container
  1. Profit.

Updating your ownCloud server in this container

Periodically new ownCloud server versions will be released. You should probably keep your server on whatever the latest stable version is. When a new update is released you'll see a banner appear across the top of the ownCloud web interface indicating that it's time to upgrade.
You should follow the official ownCloud instructions for updating your ownCloud server using the updater app built into this container. You'll need to change the permissions of some files in the container to allow them to be updated. I've tried to make this straightforward by including a script to manage the permissions for you. Before you run the updater app (as described in the official instructions), run docker exec -it oc sh -c 'set-oc-perms upgrade'. Then after you've completed the upgrade, set the permissions back to their "safer" default values like this: docker exec -it oc sh -c 'set-oc-perms runtime'.

docker-owncloud's People

Contributors

cema-sp avatar dknell avatar greyltc avatar l3iggs avatar travis-r6s avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

docker-owncloud's Issues

is_dir(): open_basedir restriction in effect

Hi I am getting this error in the logs after upgrading to 8.2

is_dir(): open_basedir restriction in effect. File(/usr/share/pear/) is not within the allowed path(s): (/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/owncloud/:/etc/webapps/owncloud:/dev/urandom) at /usr/share/webapps/owncloud/3rdparty/symfony/process/Symfony/Component/Process/ExecutableFinder.php#59

Not sure why this is happening, /usr/share/pear is already added to the open_basedir list as far as I can tell. Could you please advise?

add tags

The docker image should have tags that correspond to major owncloud releases.

existing containerized data + fresh owncloud container

Hi,

Try this out:

Pull and run two clean and fresh containers (using the official latest PostgresSQL with data stored outside of the container and l3iggs/docker-owncloud container). Then you are able to reach the owncloud app through the browser and create the admin account following the wiki. Everything is working fine.

Then, stop, delete and run fresh new containers (with postgres using the same data directory stored outside the container). Then, reach the owncloud app through the browser and, unfortunately, you will be asked to create an admin account. You can't use the already created admin account with a message such as "login already exists" and if you use a new login account, the app says:

 "Error occurred while checking PostgreSQL version"
 "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error".

Make subfolder '/owncloud' optional/customizable

Some users - like me, would like to run owncloud on a root dir '/' or in another subfolder '/share'.

Current configuration needs rewrite effort to hide the owncloud subfolder.

Maybe make it optional or customizable

Squash docker image

Running docker 1.6.0 on an OpenVZ containers leaves only the vfs file system option. That means the layers of the docker image can not share common files. Every layer will use its whole size on disk. Using the latest owncloud image adds up to nearly 80 GB.

May be you can use https://github.com/jwilder/docker-squash to reduce the amount of layers? As far as I understand it leaves the base layer untouched and squashes the layers on top of it to one resulting layer. This will also reduce the amount of data to be loaded through the net when installing your image.

http and https apache setups are not consistent

Here is the relevant discussion from Docker Hub so far (youngest to oldest):

l3iggs

@blumoe do you get the 404 errors if you don't try to mount your own config and data files? just run it as:

docker run –name oc -p 80:80 -p 443:443 -d l3iggs/owncloud

and see if https works for you

nblumoe:
The run command looks like this:

docker run -v ~/ocfiles:/usr/share/webapps/owncloud/data -v ~/occonfig:/etc/webapps/owncloud/config –name oc2 -p 80:80 -p 443:443 -d l3iggs/owncloud

I am not using my own certificates (yet) but the ones included in your image. The same problem occurs with recent firefox and chrome version on Ubuntu (I am pretty sure it's not a browser issue).

What came to my mind is, that this is not an issue with the docker container, but rather the host OS. I am running this on a digital ocean machine, which might not have port 443 properly setup, will check this now.

l3iggs:
Hi @nblumoe could you provide a few more details? What options exactly are you running docker with? Did you try to generate your own ssl certificates or are you using the ones I already mad in the image? Have you tried a different browser?

nblumoe:
This went pretty smooth so far, thanks for the image! However, currently https is not working for me. As expected I got the warning about the untrusted certificate and I added an exception for it. But then I end up with 404 errors for all the ownloud url paths and a blank index page for the root path. Seems to be an apache config issue.

Cannot create /var/www/owncloud/data

I have try the following 2 commands to start the docker image but this doesn’t effect.

docker run --name oc -p 80:80 -p 443:443 -d -e TARGET_SUBDIR=/ 
-v /media/RAID/owncloud/data:/usr/share/webapps/owncloud/data 
-v /media/RAID/owncloud/config:/etc/webapps/owncloud/config 
-v /media/RAID/owncloud/db:/var/lib/mysql
l3iggs/owncloud

and another try with

docker run --name oc -p 80:80 -p 443:443 -d -e TARGET_SUBDIR=/ 
-v /media/RAID/owncloud/data:/var/www/owncloud/data 
-v /media/RAID/owncloud/config:/etc/webapps/owncloud/config 
-v /media/RAID/owncloud/db:/var/lib/mysql 
l3iggs/owncloud 

The different is in the first volumn parameter.

What do i'm wrong?

Umlauts in Filenames

Hi!
I'm using umlauts like (ä,ö,ü) in some files, which is causing trouble using this image as the respective files can't be found. Can you maybe add other locales to the image to fix this?

After moving all my files ( 10689 items (and 99 hidden), totalling 6.4 GB) to the ~/Owncloud folder on my client (A 64bit Archlinux machine, latest owncloud-client application). I'm trying to sync my stuff, which is always resulting in the following output in the logfile, and incomplete sync (!):

.../..//...: No such file or directory.

If I just go to my local filesystem, these files are definitely existent and there. Apparently, the owncloud client seems to be unable to sync all of them, with 1,569 files reported to be missing. Server seems fine though, and connection is working properly.

After renaming a lot of them to something more generic without umlauts, the sync works again :)

This is more a suggestion, less an actual bug report, thought however to share this with everyone!

Access denied after install

Hi,

after install I get an 'Access denied (403)' when trying to access the own cloud via webbrowser (from different computer, owncloud server is headless).

Do you have an idea what might cause this?

Thanks first for putting all of this together.
oddisee

Access owncloud using bridged interface

Hello,
i´m using bridged interfaces for docker and with an fix ip and an brided interface I´m not able to connect over port 80 or 443.
I tried to view the iptables, but it tells me that I´m no root and stuff like that.
Whats wrong here?
greetings
Nico

PHP Module GD not installed

I'm trying to use this repo as a base for a project I'm working on. When I do a manual docker build I get the following:
image
Do you know how to fix the "PHP module GD not installed" error?

Also, I've successfully used the version on docker hub (https://hub.docker.com/r/l3iggs/owncloud/), but the automated build doesn't seem to be up to date.

Thanks.

document previews not working

As of the 8.1 update, I can't seem to get document previews working in the web interface utilizing the libreoffice installed in the image.

I'd love to hear any ideas for solving this.

Webdav not working since 8.2.2 update.

I have just updated the container, it was previously on 8.2.0 and now on the latest with 8.2.2. Upon first access to the web interface I went through the upgrade procedure. When in the admin section I get a warning saying Your web server is not yet set up properly to allow file synchronisation because the WebDAV interface seems to be broken. in red. When I look at the logs section it says:-

TypeError: Argument 8 passed to OC\Connector\Sabre\ServerFactory::__construct() must implement interface OCP\IRequest, none given, called in /usr/share/webapps/owncloud/apps/files/appinfo/remote.php on line 42 at /usr/share/webapps/owncloud/lib/private/connector/sabre/serverfactory.php#63 

Array to string conversion at /usr/share/webapps/owncloud/lib/private/template/functions.php#36 

is_dir(): open_basedir restriction in effect. File(/usr/share/pear/) is not within the allowed path(s): (/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/owncloud/:/etc/webapps/owncloud:/dev/urandom) at /usr/share/webapps/owncloud/3rdparty/symfony/process/Symfony/Component/Process/ExecutableFinder.php#59 

These errors repeat several times. The client on my Mac will not connect as a result with error Server xxx temporarily unavailable.

Browsing of Files and Apps appear unaffected.

The docker host is CentOS 7 with SELinux enabled (was previously). The owncloud container is linked to a MariaDB container.

Any thoughts?

can't start container

seems it exits on start immediately.

[lasse@schuirlsrv ~]$ docker run --name ocd -p 80:80 -p 443:443 -d l3iggs/owncloud
7dfeecf25d590d411e6d3fb8d3491fe8752f0c9b11c3560e90233ca36d3e554c
[lasse@schuirlsrv ~]$ docker ps -a
CONTAINER ID        IMAGE                    COMMAND                CREATED             STATUS                      PORTS               NAMES
7dfeecf25d59        l3iggs/owncloud:latest   "/bin/sh -c 'cd '/us   10 seconds ago      Exited (1) 8 seconds ago                        ocd  

Use compose

I think it would be nice to use compose to create a net of docker images for an owncloud distribution:

  • One could probably manage data/functional containers more easily
  • Spawn up the owncloud even faster
  • Seperating the MySQL database into an own container (should be faster for OC)

genSSLKey.sh missing

Hi,

script genSSLKey.sh is missing in /etc/httpd/conf/ so it always generate (or re-use) localhost ssl keys.

Apache 403 Error - Access Forbidden

I ran the instructions on the Docker page, exposed port 80, exposed the config and data volumes, and when I start up the container, all I get is a 403 error in Apache when opening it up in the browser.

Running Debian Wheezy latest

SSL Cert / Bad request!

I have resolved issue #51 by not redirecting the /https volume.

I am able to successfully access the HTTP site after starting the image.

When I access the HTTPS site, I get

Bad request!

Your browser (or proxy) sent a request that this server could not understand.

If you think this is a server error, please contact the webmaster.
Error 400
www.example.com
Apache/2.4.17 (Unix) OpenSSL/1.0.2e PHP/5.6.16

Also, in the readme, the file referenced to generate a new certificate /etc/httpd/conf/genSSLKey.sh is set to place the generated files in /etc/httpd/conf/ - Should those not be moved to /https somehow?

ERROR 403

Hi

I tried to launch your image. There is the docker ps output:

67f6fa434ca5        l3iggs/owncloud:latest                       "/root/startServers.   2 minutes ago       Up 2 minutes        443/tcp, 80/tcp          oc

Getting container ip, I go to
http://172.170.243

Then get a 403 error.

Same if I map ports to the host (-p option) for both 80 and 443.

Going on the ssl port, the browser tells that cert is not verified, I accept the certificate, and then... 403 error.

Any idea ?

EDIT: I tried too with

docker rm oc
docker run --name oc -p 10080:80 -p 10443:443  l3iggs/owncloud

Returning:


curl -L http://127.0.0.1:10080
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Access forbidden!</title>
<link rev="made" href="mailto:[email protected]" />
<style type="text/css"><!--/*--><![CDATA[/*><!--*/ 
    body { color: #000000; background-color: #FFFFFF; }
    a:link { color: #0000CC; }
    p, address {margin-left: 3em;}
    span {font-size: smaller;}
/*]]>*/--></style>
</head>

<body>
<h1>Access forbidden!</h1>
<p>




    You don't have permission to access the requested directory.
    There is either no index document or the directory is read-protected.



</p>
<p>
If you think this is a server error, please contact
the <a href="mailto:[email protected]">webmaster</a>.

</p>

<h2>Error 403</h2>
<address>
  <a href="/">127.0.0.1</a><br />
  <span>Apache/2.4.12 (Unix) OpenSSL/1.0.2a PHP/5.6.9</span>
</address>
</body>
</html>

Storing data duplicating

Hi

When i try to store data on nfs mount,disk size both growing on localhost and nfs mount,How can i handle with this situtaion?

Thanks.

set apache servername

When apache starts up the following warning is thrown:

httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.8. Set the 'ServerName' directive globally to suppress this message

Documents app needs to be updated

The Documents app needs to be updated to version 0.11.0 in the docker container in order to open .doc/docx files.

Although the user can manually update it, might as well have it updated :-)

Commandline 'occ' is broken

I'm actually not sure what is going on, but the PHP CLI doesn't load all the modules:

[http@8e83466be335 ~]$ cd /usr/share/webapps/owncloud/
[http@8e83466be335 owncloud]$ php occ
An unhandled exception has been thrown:
OC\HintException: [0]: Missing memcache class \OC\Memcache\XCache for local cache (Is the matching PHP module installed and enabled ?)

Removing the cache entry from the owncloud conf makes it worse:

[http@8e83466be335 owncloud]$ php occ
The posix extensions are required - see http://php.net/manual/en/book.posix.php

php -m shows all the necessary modules are loaded and nothing looks odd about php -i.

(This is all after adding /etc/webapps/owncloud/config to open_basedir.)

Access Forbidden when mapping a host directory to the data path

Hello,

I tried mapping the ownCloud data directory to /owncloud via "docker run --name oc -p 80:80 -p 443:443 -d -v /owncloud/data:/usr/share/webapps/owncloud l3iggs/owncloud"

When I browse to localhost/owncloud, I receive "Error 403: Access Forbidden." I've tried giving http:http ownership of /owncloud, to no effect. Works perfectly when the default settings are used.

Any idea on where to go from here?

Automatic setting of username + password

Is there a way to set a username + password automatically as part of running the Docker image?
Usecase is that we need a Docker installation with a pre-defined username/password for integration purposes. We don't want to emulate the setting of the initial account data using screen scrapping or so.
Is this possible?

The ssl certificate provided here gives essentially no protection

Currently the ssl certificate provided in this image (for https browsing) is generated at build time. That means anyone can download the docker image and get the private key.

It would be much safer if this key/certificate were generated at run time so that everyone running this image would have a unique key & certificate.

Cannot create or write in datadirectory /usr/share/webapps/owncloud/data

I just followed your instructions on how to install the container. I don't know if this is relevant information but since i already have an Apache server running on the host pc, i changed the port from 80 to 9998.

Command i used to run the container: docker run --name oc -p 9998:80 -p 443:443 -d l3iggs/owncloud

When i want to finish the installation by entering a username and password, it says:
Cannot create or write in datadirectory /usr/share/webapps/owncloud/data

Is this a known issue or does this have something to do with the port?

Thanks.

Cannot start the docker - no such file or directory

Using the newest build as of yesterday, I cannot start the owncloud docker with the following error:

FATA[0001] Error response from daemon: Cannot start container f06a9cb7574a1e70542c2890a4cf09a8ff97014428248da8814100a6df8e81c1: exec: "cd /usr; /usr/bin/mysqld_safe --datadir='/var/lib/mysql'& apachectl -DFOREGROUND": stat cd /usr; /usr/bin/mysqld_safe --datadir='/var/lib/mysql'& apachectl -DFOREGROUND: no such file or directory

The docker run command I used was:
docker run --name oc -p 8000:80 -p 8443:443 -d l3iggs/owncloud:latest

Not starting / cert generation issue...

I install the container and cannot access the webui.
I had to open the CLI for the docker image and run
'
[root@c4484faa4069 /]# apachectl start
AH00526: Syntax error on line 144 of /etc/httpd/conf/extra/httpd-ssl.conf:
SSLCertificateFile: file '/https/server.crt' does not exist or is empty

[root@c4484faa4069 /]# sh -c 'SUBJECT="/C=US/ST=CA/L=CITY/O=ORGANIZATION/OU=UNIT/CN=localhost" /etc/httpd/conf/genSSLKey.sh'
[root@c4484faa4069 /]# cp /etc/httpd/conf/server.crt /https
[root@c4484faa4069 /]# cp /etc/httpd/conf/server.key /https
[root@c4484faa4069 /]# apachectl restart
httpd not running, trying to start
'
Following that I am able to access the UI.

Not sure it matters but this is being used on unRAID. Discussion here
http://lime-technology.com/forum/index.php?topic=38930.msg427988#msg427988

version 8.1 has removed the force https checkbox

This means (for now) there's no easy way to ensure all traffic is encrypted no matter what.

I need to come up with some other easily configurable way for the user to force https if they wish.

Probably I'll have to use an environment variable passed via the docker command line which modifies the apache config file.

Apache config brocken?

After updating I've got an empty filetree page. After trying a fresh instance same issue.
screenshot_2015-08-14_08-02-07

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.