Git Product home page Git Product logo

iventoy's Introduction

iventoy

A Docker image running iventoy.

A github actions workflow runs daily to check if their is a new release.

https://hub.docker.com/r/ziggyds/iventoy

Docker Compose

This does not work with rootless Docker. The container must be run as root.

If you don't plan on using named volumes, as is used in the example below, you'll have to retrieve the files under /app/data from the container.

---
version: '3.9'
services:
  iventoy:
    image: ziggyds/iventoy:latest
    container_name: iventoy
    restart: always
    privileged: true #must be true
    ports:
      - 26000:26000
      - 16000:16000
      - 10809:10809
      - 67:67/udp
      - 69:69/udp
    volumes:
      - isos:/app/iso
      - config:/app/data
      - /<path to logs>:/app/log
    environment:
      - AUTO_START_PXE=true # optional, true by default

volumes:
  isos:
    external: true
  config:
    external: true

Not necessary to expose all the listed ports. https://www.iventoy.com/en/doc_portnum.html

iventoy's People

Contributors

askiiart avatar vvbelousov avatar zidesm 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

Watchers

 avatar  avatar

iventoy's Issues

Failed to extract iventoy.dat file.

The following error appears when trying to start it using docker:

iventoy start SUCCESS PID=0
Please open your browser and visit http://127.0.0.1:26000 or http://x.x.x.x:26000 (x.x.x.x is any valid IP address)
2023/10/14 19:18:10.706 [PXE]  Module <Tarfs> init start ...
2023/10/14 19:18:10.706 [PXE]  dat file too small
2023/10/14 19:18:10.706 [PXE]  Failed to extract iventoy.dat file.
2023/10/14 19:18:10.706 [PXE]  Module <Tarfs> init FAILED ...
2023/10/14 19:18:10.706 [PXE]  Module <Tarfs> exit ...
2023/10/14 19:18:10.706 [PXE]  Module <MAC> exit ...
2023/10/14 19:18:10.706 [PXE]  Module <Cfg> exit ...
2023/10/14 19:18:10.706 [PXE]  Module <Plat> exit ...
2023/10/14 19:18:10.706 [PXE]  Module <Log> exit ...
2023/10/14 19:18:10.706 [LOG]  iVentoy log exit ...

My Compose-File:

version: '3.9'
services:
  iventoy:
    image: ziggyds/iventoy:latest
    container_name: iventoy
    restart: always
    privileged: true #must be true
    #ports:
    #  - 26000:26000
    #  - 16000:16000
    #  - 10809:10809
    ## - 67:67/udp
    #  - 69:69/udp
    volumes:
      - /volume1/docker/pxe/iso:/app/iso
      - /volume1/docker/pxe/data:/app/data
      - /volume1/docker/pxe/log:/app/log
    environment:
      - AUTO_START_PXE=true
    networks:
      lan:
        ipv4_address: '10.10.0.9'
        ipv6_address: 'fdd0:c7b1:e178::9'
networks:
  lan:
    external: true

Edit: "netstat -tulnp" (net-tools installed using apt) doesn't show the ports binded and the web interface is inaccessible too.

WebGUI not working

WebGUI not working.

Log:
iventoy start SUCCESS PID=13 Please open your browser and visit http://127.0.0.1:26000 or http://x.x.x.x:26000 (x.x.x.x is any valid IP address) 2023/12/25 23:51:19.048 [PXE] Module <Tarfs> init start ... 2023/12/25 23:51:19.048 [PXE] dat file too small 2023/12/25 23:51:19.048 [PXE] Failed to extract iventoy.dat file. 2023/12/25 23:51:19.048 [PXE] Module <Tarfs> init FAILED ... 2023/12/25 23:51:19.048 [PXE] Module <Tarfs> exit ... 2023/12/25 23:51:19.048 [PXE] Module <MAC> exit ... 2023/12/25 23:51:19.048 [PXE] Module <Cfg> exit ... 2023/12/25 23:51:19.048 [PXE] Module <Plat> exit ... 2023/12/25 23:51:19.048 [PXE] Module <Log> exit ... 2023/12/25 23:51:19.048 [LOG] iVentoy log exit ...

Container crashes after a certain amount of time.

Running this container on unraid 6.12.4 on the brige network br0 (bridged interface) with it's own IP Address 192.168.1.40.

Container just seems to stale out after a few days and is copying all of its logs out to log.txt however internally it's looking for individual log entries as per below.

Internal/External log file mapping seems to be working fine as logs are being concatonated to log.txt on persistant storage folder (/mnt/user/appdata/iventory/log ) However iventoy is trying to find the individual entries it seems.

Log.txt has spiralled to about 121mb from being up over the last 2 weeks or so... so keep writing indefeintely.

From the console below, you can see a lot of the reference to the log location... That is mapped as the screenshot below:

If you need my full container paths/ports/config etc happy to share if needed...

Can you share your log mapping and i can try that??

image

2023/11/26 08:32:47.460 [UTIL] Failed to open file <log/history/20231126_083244.log.gz> errno:2
2023/11/26 08:32:50.198 [UTIL] Failed to open file <log/history/20231126_083247.log.gz> errno:2
2023/11/26 08:32:52.914 [UTIL] Failed to open file <log/history/20231126_083250.log.gz> errno:2
2023/11/26 08:32:55.280 [UTIL] Failed to open file <log/history/20231126_083252.log.gz> errno:2
2023/11/26 08:32:57.692 [UTIL] Failed to open file <log/history/20231126_083255.log.gz> errno:2
2023/11/26 08:33:00.089 [UTIL] Failed to open file <log/history/20231126_083257.log.gz> errno:2
2023/11/26 08:33:03.363 [UTIL] Failed to open file <log/history/20231126_083300.log.gz> errno:2
2023/11/26 08:33:06.367 [UTIL] Failed to open file <log/history/20231126_083303.log.gz> errno:2
2023/11/26 08:33:09.825 [UTIL] Failed to open file <log/history/20231126_083306.log.gz> errno:2
2023/11/26 08:33:12.975 [UTIL] Failed to open file <log/history/20231126_083309.log.gz> errno:2
2023/11/26 08:33:15.801 [UTIL] Failed to open file <log/history/20231126_083313.log.gz> errno:2
2023/11/26 08:33:18.414 [UTIL] Failed to open file <log/history/20231126_083315.log.gz> errno:2
2023/11/26 08:33:21.581 [UTIL] Failed to open file <log/history/20231126_083318.log.gz> errno:2
2023/11/26 08:33:24.015 [UTIL] Failed to open file <log/history/20231126_083321.log.gz> errno:2
2023/11/26 08:33:26.344 [UTIL] Failed to open file <log/history/20231126_083324.log.gz> errno:2
2023/11/26 08:33:28.695 [UTIL] Failed to open file <log/history/20231126_083326.log.gz> errno:2
2023/11/26 08:33:31.112 [UTIL] Failed to open file <log/history/20231126_083328.log.gz> errno:2
2023/11/26 08:33:33.858 [UTIL] Failed to open file <log/history/20231126_083331.log.gz> errno:2
2023/11/26 08:33:36.409 [UTIL] Failed to open file <log/history/20231126_083333.log.gz> errno:2
2023/11/26 08:33:38.982 [UTIL] Failed to open file <log/history/20231126_083336.log.gz> errno:2
2023/11/26 08:33:41.567 [UTIL] Failed to open file <log/history/20231126_083339.log.gz> errno:2
2023/11/26 08:33:44.177 [UTIL] Failed to open file <log/history/20231126_083341.log.gz> errno:2
2023/11/26 08:33:46.694 [UTIL] Failed to open file <log/history/20231126_083344.log.gz> errno:2
2023/11/26 08:33:49.124 [UTIL] Failed to open file <log/history/20231126_083346.log.gz> errno:2
2023/11/26 08:33:51.679 [UTIL] Failed to open file <log/history/20231126_083349.log.gz> errno:2
2023/11/26 08:33:54.154 [UTIL] Failed to open file <log/history/20231126_083351.log.gz> errno:2
2023/11/26 08:33:56.562 [UTIL] Failed to open file <log/history/20231126_083354.log.gz> errno:2
2023/11/26 08:33:59.570 [UTIL] Failed to open file <log/history/20231126_083356.log.gz> errno:2
2023/11/26 08:34:02.614 [UTIL] Failed to open file <log/history/20231126_083359.log.gz> errno:2
2023/11/26 08:34:05.393 [UTIL] Failed to open file <log/history/20231126_083402.log.gz> errno:2
2023/11/26 08:34:07.872 [UTIL] Failed to open file <log/history/20231126_083405.log.gz> errno:2
2023/11/26 08:34:10.139 [UTIL] Failed to open file <log/history/20231126_083407.log.gz> errno:2
2023/11/26 08:34:12.479 [UTIL] Failed to open file <log/history/20231126_083410.log.gz> errno:2
iventoy start SUCCESS PID=16

Please open your browser and visit http://127.0.0.1:26000 or http://x.x.x.x:26000 (x.x.x.x is any valid IP address)

2023/11/26 08:34:20.781 [PXE] [1] collect wim files finished.
2023/11/26 08:34:20.781 [PXE] [1] Phase1 parse image <iso/Windows/Win11_23H2_English_x64_(UEFI).iso> finished success
2023/11/26 08:34:20.800 [PXE] [3] This is standard Windows ISO.
2023/11/26 08:34:20.800 [PXE] [3] img <iso/Windows/Win10_22H2_EnglishInternational_x64v1(UEFI-BIOS).iso> OS type:Windows
2023/11/26 08:34:20.800 [PXE] [3] collect wim files for <iso/Windows/Win10_22H2_EnglishInternational_x64v1(UEFI-BIOS).iso> ...
2023/11/26 08:34:20.801 [PXE] [3] Find in /efi/microsoft/boot/bcd ...
2023/11/26 08:34:20.801 [PXE] [3] Find wim flag:</sources/boot.wim>
2023/11/26 08:34:20.801 [PXE] [3] Find wim flag:</sources/boot.wim>
2023/11/26 08:34:20.801 [PXE] [3] wim </sources/boot.wim> already exist
2023/11/26 08:34:20.802 [PXE] [3] Find in /boot/bcd ...
2023/11/26 08:34:20.802 [PXE] [3] Find wim flag:</sources/boot.wim>
2023/11/26 08:34:20.802 [PXE] [3] wim </sources/boot.wim> already exist
2023/11/26 08:34:20.802 [PXE] [3] Find wim flag:</sources/boot.wim>
2023/11/26 08:34:20.802 [PXE] [3] wim </sources/boot.wim> already exist
2023/11/26 08:34:20.802 [PXE] [3] [WIM 0] /sources/boot.wim [Seek:22816768 Size:686766374 RecSeek:0]
2023/11/26 08:34:20.802 [PXE] [3] collect wim files finished.
2023/11/26 08:34:20.802 [PXE] [3] Phase1 parse image <iso/Windows/Win10_22H2_EnglishInternational_x64v1(UEFI-BIOS).iso> finished success
2023/11/26 08:34:20.850 [PXE] [5] This is standard Windows ISO.
2023/11/26 08:34:20.850 [PXE] [5] img <iso/Windows/Windows_7_AIO_(Official).iso> OS type:Windows
2023/11/26 08:34:20.850 [PXE] [5] collect wim files for <iso/Windows/Windows_7_AIO_(Official).iso> ...
2023/11/26 08:34:20.851 [PXE] [5] Find in /efi/microsoft/boot/bcd ...
2023/11/26 08:34:20.851 [PXE] [5] Find wim flag:</boot.wim>
2023/11/26 08:34:20.851 [PXE] [5] Find wim flag:</sources/boot.wim>
2023/11/26 08:34:20.851 [PXE] [5] Find wim flag:</sources/boot.wim>
2023/11/26 08:34:20.851 [PXE] [5] wim </sources/boot.wim> already exist
2023/11/26 08:34:20.854 [PXE] [5] Find in /boot/bcd ...
2023/11/26 08:34:20.854 [PXE] [5] Find wim flag:</boot.wim>
2023/11/26 08:34:20.854 [PXE] [5] Find wim flag:</sources/boot.wim>
2023/11/26 08:34:20.854 [PXE] [5] wim </sources/boot.wim> already exist
2023/11/26 08:34:20.854 [PXE] [5] Find wim flag:</sources/boot.wim>
2023/11/26 08:34:20.854 [PXE] [5] wim </sources/boot.wim> already exist
2023/11/26 08:34:20.855 [PXE] [5] [WIM 0] /sources/boot.wim [Seek:37939200 Size:144734333 RecSeek:0]
2023/11/26 08:34:20.855 [PXE] [5] collect wim files finished.
2023/11/26 08:34:20.855 [PXE] [5] Phase1 parse image <iso/Windows/Windows_7_AIO_(Official).iso> finished success
2023/11/26 08:34:22.363 [UTIL] Failed to open file <log/history/20231126_083419.log.gz> errno:2
2023/11/26 08:34:23.339 [PXE] [4] This is standard Windows ISO.
2023/11/26 08:34:23.339 [PXE] [4] img <iso/Windows/Windows_8_AIO_(Official).iso> OS type:Windows
2023/11/26 08:34:23.339 [PXE] [4] collect wim files for <iso/Windows/Windows_8_AIO_(Official).iso> ...
2023/11/26 08:34:23.340 [PXE] [4] Find in /efi/microsoft/boot/bcd ...
2023/11/26 08:34:23.341 [PXE] [4] Find wim flag:</boot.wim>
2023/11/26 08:34:23.341 [PXE] [4] Find wim flag:</sources/boot.wim>
2023/11/26 08:34:23.341 [PXE] [4] Find wim flag:</sources/boot.wim>
2023/11/26 08:34:23.341 [PXE] [4] wim </sources/boot.wim> already exist
2023/11/26 08:34:23.343 [PXE] [4] Find in /boot/bcd ...
2023/11/26 08:34:23.343 [PXE] [4] Find wim flag:</boot.wim>
2023/11/26 08:34:23.343 [PXE] [4] Find wim flag:</sources/boot.wim>
2023/11/26 08:34:23.343 [PXE] [4] wim </sources/boot.wim> already exist
2023/11/26 08:34:23.343 [PXE] [4] Find wim flag:</sources/boot.wim>
2023/11/26 08:34:23.343 [PXE] [4] wim </sources/boot.wim> already exist
2023/11/26 08:34:23.344 [PXE] [4] [WIM 0] /sources/boot.wim [Seek:18057216 Size:165654778 RecSeek:0]
2023/11/26 08:34:23.344 [PXE] [4] collect wim files finished.
2023/11/26 08:34:23.344 [PXE] [4] Phase1 parse image <iso/Windows/Windows_8_AIO_(Official).iso> finished success
2023/11/26 08:34:25.790 [UTIL] Failed to open file <log/history/20231126_083422.log.gz> errno:2

Windows Setup Driver Issues

Hello there,
I am currently trying to get iventoy working as a docker container inside of portainer.

It basically works fine, except for the windows setup. Whenever I want to setup windows via pxe boot, the setup manager can't find any harddrive drivers. If I try the exact same ISO via usb-stick it works perfectly fine. I also tried setting iventoy up by hand (following the iventoy website install steps), booting the same windows ISO via pxe boot and it also works perfectly fine.

Is there any known issue or maybe solution for this problem?

Thanks for the responses.

cannot delete iso

my ISOs are on my NAS, if I want to replace an iso with the same name, I delete the old iso first. If I reload explorer, the iso is there again. If I stop the iVentoy Docker and then delete it, the iso also remains deleted. As if the iVentoy locks the iso. Is there anything known.

No WEB UI after updating from 1.10.19 to 1.10.20

I run iventoy via your repo on unraid with the following config based off your example docker compose file:

I use the network bridge option to give iventoy its own IP Address (192.168.1.40) My unraid server runs from (192.168.1.125)

image

After updating to latest (ziggyds/iventoy:1.0.20) from (ziggyds/iventoy:1.0.19)

Container fails to show WEB UI. I get the following error:

lease open your browser and visit http://127.0.0.1:26000 or http://x.x.x.x:26000 (x.x.x.x is any valid IP address)

2024/05/31 02:10:57.521 [PXE] iventoy.dat <8034564> <15042560>
2024/05/31 02:10:58.261 [PXE] Extract iventoy.dat success.
2024/05/31 02:10:58.262 [PXE] ======= iVentoy 1.0.19 ========
2024/05/31 02:10:58.262 [PXE] tarfs find 179 files
2024/05/31 02:10:58.262 [PXE] Module init OK ...
2024/05/31 02:10:58.262 [PXE] Module init start ...
2024/05/31 02:10:58.262 [PXE] cpio buf:0x14b7cb1a7410 len:4407296 fixoff:343888
2024/05/31 02:10:58.262 [PXE] Module init OK ...
2024/05/31 02:10:58.262 [PXE] [Linux 64] checksum not match
2024/05/31 02:10:58.262 [PXE] ### iVentoy start failed. ###

Manually selecting the '1.10.20' or 'latest' tags give the same errror. Reverting to 1.10.19 fixes it.

I've never had any issues on previous builds but something has changed betwen these 2 versions. Can you advise?

Configuration Issue

Hello, first off thanks for making this, I'm trying to learn docker so this is a great intro project. So I have the container running and I can get to the web ui, but I don't know where to put the iso files. I'm also pretty new to linux so in a little over my head there as well lol.

This is my docker-compose.yml file
`---
version: '3.9'
services:
iventoy:
image: ziggyds/iventoy:latest
container_name: iventoy
restart: always
privileged: true #must be true
network_mode: host
ports:
- 26000:26000
- 16000:16000
- 10809:10809
- 67:67/udp
- 69:69/udp
volumes:
- isos:/app/iso
- config:/app/data
- /:/app/log
environment:
- AUTO_START_PXE=true # optional, true by default

volumes:
isos:
external: true
config:
external: true`

I hate to ask, but would you be willing to outline the commands needed to finish any config for creating/mounting the volumes and where that physical location would be so I can load my isos. Ideally the target directory would be /home/kenji/docker-iimages/iventoy/app/isos but if that's not possible then that's okay too. Thank you for any help you are willing to provide. Thanks again for the effort you put into making this!

Auto start using -R option

Hi,

could you add a option or a toggle that iventoy would start the pxe service automatically?

I would have thought of an environment variable that would need to be set that the -R start would be appended.

Thank you

Error: Starting Error response from daemon: readdirent /dev/serial/by-id: no such file or directory

I'm a newbie with Docker, I'm running Docker on my Proxmox as an LXC container.
When I start the compose file, I receive the following error:
Starting Error response from daemon: readdirent /dev/serial/by-id: no such file or directory

Looking at the Proxmox forums, this is usually because the USB device cannot be passed through.
However I would not have thought iventoy would need a USB device?

Any suggestions please?

container not starting

the container appear to be running but the web interface is not working and the log has the following issues reported

iventoy start SUCCESS PID=16
Please open your browser and visit http://127.0.0.1:26000 or http://x.x.x.x:26000 (x.x.x.x is any valid IP address)
2024/05/13 14:31:52.096 [PXE] Module init start ...
2024/05/13 14:31:52.096 [PXE] dat file too small
2024/05/13 14:31:52.096 [PXE] Failed to extract iventoy.dat file.
2024/05/13 14:31:52.096 [PXE] Module init FAILED ...
2024/05/13 14:31:52.096 [PXE] Module exit ...
2024/05/13 14:31:52.096 [PXE] Module exit ...
2024/05/13 14:31:52.096 [PXE] Module exit ...
2024/05/13 14:31:52.096 [PXE] Module exit ...
2024/05/13 14:31:52.096 [PXE] Module exit ...
2024/05/13 14:31:52.096 [LOG] iVentoy log exit ...

build_1 [UTIL] mount directory failed, errno:1 build_1 [PXE] ### iVentoy start failed. ### error

Docker version 24.0.5, build ced0996
docker-compose version 1.29.2, build 5becea4c
Linux computer 5.18.0-4mx-amd64 #1 SMP PREEMPT_DYNAMIC Debian 5.18.16-1~mx21+1 (2022-08-22) x86_64 GNU/Linux

docker volume create --name=isos
docker volume create --name=config
docker volume create --name=iventoy_logs
root@computer:/opt/docker/iventoy# docker-compose up

Starting iventoy         ... done
Starting iventoy_build_1 ... done
Attaching to iventoy, iventoy_build_1
iventoy    | iventoy start SUCCESS PID=16
iventoy    | 
iventoy    | Please open your browser and visit http://127.0.0.1:26000 or http://x.x.x.x:26000 (x.x.x.x is any valid IP address)
iventoy    | 
build_1    | iventoy start SUCCESS PID=0
build_1    | 
build_1    | Please open your browser and visit http://127.0.0.1:26000 or http://x.x.x.x:26000 (x.x.x.x is any valid IP address)
build_1    | 
iventoy    | 2023/11/09 02:21:34.599 [PXE]  602da149414e6904c79f9208ef68fcf657d118a965e2ed4e266e91920b6e7380
iventoy    | 2023/11/09 02:21:34.599 [PXE]  ====================== SYSTEM IP LIST ===================================
iventoy    | 2023/11/09 02:21:34.599 [PXE]   [1] 172.18.0.2        255.255.0.0       172.18.0.1        eth0
iventoy    | 2023/11/09 02:21:34.599 [PXE]  =========================================================================
iventoy    | 2023/11/09 02:21:34.599 [PXE]  PXE cofigure recovery ...
iventoy    | 2023/11/09 02:21:34.599 [PXE]  data/config.dat is valid, now recover data ...
iventoy    | 2023/11/09 02:21:34.599 [PXE]  Recover: dhcp server mode 0
iventoy    | 2023/11/09 02:21:34.599 [PXE]  Recover: boot background mode 0
iventoy    | 2023/11/09 02:21:34.599 [PXE]  ########## iVentoy auto running. #########
iventoy    | 2023/11/09 02:21:34.599 [PXE]  No image file detected.
build_1    | 2023/11/09 01:30:06.343 [PXE]  ==========================================================
build_1    | 2023/11/09 01:30:06.343 [UTIL] mount directory failed, errno:1
build_1    | 2023/11/09 01:30:06.343 [PXE]  ### iVentoy start failed. ###
build_1    | 2023/11/09 02:21:34.408 [PXE]  ==========================================================
build_1    | 2023/11/09 02:21:34.408 [PXE]  ##########################################################
build_1    | 2023/11/09 02:21:34.408 [PXE]  ##################### IVENTOY RUN ########################
build_1    | 2023/11/09 02:21:34.408 [PXE]  ##########################################################
build_1    | 2023/11/09 02:21:34.408 [PXE]  ==========================================================
build_1    | 2023/11/09 02:21:34.408 [UTIL] mount directory failed, errno:1
build_1    | 2023/11/09 02:21:34.409 [PXE]  ### iVentoy start failed. ###

docker-compose.yml the only difference is I have - iventoy_logs:/app/log under volumes

I have an iso in /var/lib/docker/volumes/isos
/var/lib/docker/volumes/iventoy_logs is empty

docker exec -it iventoy_build_1 /bin/bash
/app/iso directory is empty
/app/log directory contains log.txt and history directory
/app/config directory is empty

It appears the volumes aren't being mounted although I'm at a loss as to why.

[UTIL] mount directory failed, errno:1

Hello together,

i try to run this docker in TrueNas Scale.
i always get the error [UTIL] mount directory failed, errno:1
Ist there anything i missed?

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.